Artikel ini mengimplementasikan delapan algoritma penyortiran yang umum digunakan: memasukkan penyortiran, penyortiran yang menggelegak, memilih penyortiran, penyortiran bukit, penyortiran cepat, penyortiran merger, penumpukan dan penyortiran pangkalan LST
Yang pertama adalah file EightAlgorithms.java .
Impor java.util.arrays;/** mengimplementasikan delapan algoritma penyortiran yang umum digunakan: memasukkan penyortiran, penyortiran yang menggelegak, memilih penyortiran, penyortiran bukit*, dan penyortiran cepat, penggabungan penyortiran, slip khusus dan lsthor gkh178*/kelas delapan gabungan {// Masukkan penyortiran: Kompleks waktu O (n^2) public static void InsertSort (int a [], int n) {for (int i = 1; i <n; ++ i) {{int temp = a [i]; int j = i -1; ;}} // penyortiran gelembung: kompleksitas waktu o (n^2) public static void bubblesort (int a [], int n) {for (int i = n -1; i> 0; 0; 0; 0; 0 0; Temp = a [j]; int a [], int n) {for (int i = 0; i <n -1; ++ i) {int min = a [i]; j <n; ++ j) {if (a [a [a [a [a [a [a [a [a [a [a j] <min) {min = a [ j]; Public static void shellsort (int a [], int n) {for (int gap = n / 2; gap> = 1; celah / = 2) {untuk (int i = gap; i <n; ++ i) { int temp = a [i]; j + gap] = test;}} // penyortiran cepat: kompleksitas waktu o (nlgn) public static void quicksort (int a [], int n) {_quicksort (_quicksort (a, 0, n-1);} public static void kiri, q -1); Left <kanan && A [kanan]> = pivot) {--right;} a [kiri] = a [kanan]; kanan] = A [kiri];} a [kiri] = pivot; , n -1); mid); _mergesort (a, mid + 1, kanan); -Left +1; j];} int i = 0; ] <noda [j]) {a [k] = newa [i ++];} else {a [k] = newa [j ++];} while (i <= mid -left) {a [k + +] = newa [i ++];} while (j <= kanan -left) {a [k ++] = newa [j ++];} // heap sorting: kompleksitas waktu o (nlgn) void heapapor public heapsort publik (int a [], int n) {builtmaxHeap (a, n); i) {int temp = a [0]; [], int n) {upadjust (a, n);} // array panjang n disesuaikan dengan void statis publik upadjust (int a [], int n) {// setiap elemen dengan node anak yang melintasi adalah Traversed. n) {// anak kanan Nilai nilai lebih besar dari nilai node, ditukarnya jika (a [2 * i]> a [i -1]) {int temp = a [2 * i]; A [2 * i] = a [i -1]; i -1]> a [i -1]) {int temp = a [2 * i -1]; } // AdjustNode (a, n, 2 * i); {// Nilai node, pertukarannya jika (a [2 * i -1]> a [i -1]) {int temp = a [2 * i -1]; = A - 1]; dari array, radix adalah dasar // metode ini adalah menggunakan metode LST untuk penyortiran dasar, dan metode MST tidak termasuk di dalamnya // Parameter radix adalah basis, umumnya 10; angka ke array yang akan diurutkan; n adalah panjang array public static void void lstradixsort (int a [], int n, int radix, int jarak) {int [] int [n] baru; Untuk sementara menyetor array [] count = int [radix] baru; Tempat pertama ke tempat pertama untuk (int i = 0; i <<< istance; ++ i) {System.arraycopy (a, 0, newa, 0, n); newa array arrays.fill (Count, 0); ; Posisi akhir dari setiap radixkey dalam array, dan kisaran nomor posisi adalah 1 -n untuk (int j = 1; j <radix; ++ j) {count [j] = count [j] + count [j -1 ];} // Gunakan prinsip penghitungan penyortiran untuk mencapai semacam itu. j]; -count [Radixkey];} Divide = Divide * Radix;}}}Kemudian uji kode testeightalgorithms.java , kodenya adalah sebagai berikut:
Public Testeightalgorithms {public static void printArray (int a [], int n) {for (int i = 0; i <n; ++ i) {System.print (a [i] +""); == n -1) {System.out.println ();}} public static void main (string [] args) {for (int i = 1; i <= 8; ++ i) {int arrr [] = {45, 38, 26, 77, 128, 38, 25, 444, 61, 153, 9999, 1012, 43, 128}; 2: Eightalgorithms.Bubblesort (ARR, ARR Eightalgorithms.quicksort (arr, arr.length); Eightalgorithms.lstradixsort (arr, arr.length, 10, 4); Hasil menjalankan terakhir adalah sebagai berikut:
Di atas adalah semua kode untuk Java untuk mengimplementasikan delapan algoritma penyortiran yang umum digunakan.