Maison  >  Article  >  Java  >  Exemple d'affichage : implémentation Java de l'algorithme de tri par fusion et évaluation des performances

Exemple d'affichage : implémentation Java de l'algorithme de tri par fusion et évaluation des performances

WBOY
WBOYoriginal
2024-02-19 18:33:21883parcourir

Exemple daffichage : implémentation Java de lalgorithme de tri par fusion et évaluation des performances

Exemple de démonstration : Utilisation de Java pour implémenter l'algorithme de tri par fusion et effectuer des tests de performances

1. Introduction
Merge Sort est un algorithme de tri efficace qui est largement utilisé dans le développement réel. Il utilise l'idée de Diviser pour régner pour décomposer le problème en plusieurs sous-problèmes plus petits, puis fusionner les solutions des sous-problèmes. Cet article implémentera l'algorithme de tri par fusion via du code Java et testera ses performances.

2. Principe de l'algorithme de tri par fusion
L'idée principale du tri par fusion est de diviser pour régner. Les étapes spécifiques sont les suivantes :

  1. Divisez le tableau à trier en deux sous-tableaux à partir de la position médiane.
  2. Triez récursivement ces deux sous-tableaux respectivement.
  3. Fusionnez les sous-tableaux triés pour obtenir le tableau ordonné final.

3. Implémentation du code Java
Ce qui suit est un exemple de code utilisant le langage Java pour implémenter l'algorithme de tri par fusion :

public class MergeSort {
    public static void mergeSort(int[] arr) {
        if (arr == null || arr.length <= 1) {
            return;
        }
        int[] temp = new int[arr.length];
        mergeSort(arr, 0, arr.length - 1, temp);
    }

    private static void mergeSort(int[] arr, int left, int right, int[] temp) {
        if (left < right) {
            int mid = (left + right) / 2;
            mergeSort(arr, left, mid, temp);
            mergeSort(arr, mid + 1, right, temp);
            merge(arr, left, mid, right, temp);
        }
    }

    private static void merge(int[] arr, int left, int mid, int right, int[] temp) {
        int i = left;
        int j = mid + 1;
        int k = 0;
        while (i <= mid && j <= right) {
            if (arr[i] <= arr[j]) {
                temp[k++] = arr[i++];
            } else {
                temp[k++] = arr[j++];
            }
        }
        while (i <= mid) {
            temp[k++] = arr[i++];
        }
        while (j <= right) {
            temp[k++] = arr[j++];
        }
        for (i = 0; i < k; i++) {
            arr[left + i] = temp[i];
        }
    }
}

4. Test de performances
Afin d'effectuer un test de performances sur l'algorithme de tri par fusion, nous générons un ensemble de tableaux aléatoires pour le tri et l'enregistrement Temps requis pour le tri.

import java.util.Arrays;
import java.util.Random;

public class PerformanceTest {
    public static void main(String[] args) {
        int[] arr = generateRandomArray(1000000);
        System.out.println("排序前:" + Arrays.toString(arr));
        long startTime = System.currentTimeMillis();
        MergeSort.mergeSort(arr);
        long endTime = System.currentTimeMillis();
        System.out.println("排序后:" + Arrays.toString(arr));
        System.out.println("排序耗时:" + (endTime - startTime) + "毫秒");
    }

    private static int[] generateRandomArray(int length) {
        int[] arr = new int[length];
        Random random = new Random();
        for (int i = 0; i < length; i++) {
            arr[i] = random.nextInt(length);
        }
        return arr;
    }
}

Dans le code ci-dessus, utilisez d'abord la méthode generateRandomArray方法生成了一组长度为1000000的随机整数数组,然后使用MergeSort.mergeSort pour trier le tableau et enregistrez le temps nécessaire au tri. Enfin, le tableau trié et l'heure de tri sont affichés.

5. Résumé
Grâce à l'exemple de démonstration ci-dessus, nous avons implémenté l'algorithme de tri par fusion via du code Java et testé ses performances. L'algorithme de tri par fusion est un algorithme de tri efficace qui offre de bonnes performances face au tri de données à grande échelle. Grâce à l'idée de diviser pour régner, le tri par fusion peut décomposer et résoudre efficacement le problème, obtenant ainsi une solution ordonnée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn