Teknologi baru terus berubah, dan menguasai beberapa yayasan adalah dasar yang kuat untuk belajar dan terus memperbarui teknologi di masa depan. Saya tidak ada hubungannya baru -baru ini. Untuk meninjau struktur data yang saya pelajari sebelumnya, saya mengimplementasikan algoritma penyortiran dalam struktur data di JS, dan demo tertanam di akhir artikel ini.
Penyortiran sederhana
Sortir Gelembung
Penyortiran gelembung adalah algoritma penyortiran paling sederhana, dengan persegi kompleksitas waktu n, dan kodenya adalah sebagai berikut:
function bubblesort (array) {for (var i = 0; i <array.length; i ++) {for (var j = array.length; j> 0; j--) {if (array [j] <array [j - 1]) {var temp = array [j - 1]; array [j - 1] = array [j]; array [j] = temp; }} /* Hasil output* /document.write ("Ini adalah + (i + 1) +" loop kedua ・, hasilnya adalah: "); untuk (var k = 0; k <array.length; k ++) {document.write (array [k] +", ");} hasil out.write (" <br /*);Sort Insert Langsung
Penyortiran penyisipan langsung juga merupakan algoritma penyortiran yang sederhana, dan kompleksitas waktu juga dikuadratkan oleh N, tetapi kinerjanya sedikit lebih baik daripada penyortiran gelembung. Kodenya adalah sebagai berikut:
function incertsort (array) {var temp; untuk (var i = 1; i <array.length; i ++) {var temp = array [i]; untuk (var j = i; j> 0 && temp <array [j - 1]; j--) {array [j] = array [j - 1]; } array [j] = Temp /* hasil output* /document.write ("th? + i +" Hasil dari pemesanan lulus adalah: ") untuk (var n = 0; n <array.length; n ++) {document.write (array [n] +", ");} document.write (" <Br /The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The the The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The The Brit.Pilih Sort
Penyortiran seleksi juga merupakan algoritma penyortiran yang sederhana, dengan kompleksitas waktu N kuadrat, dan kinerjanya juga sedikit lebih baik daripada penyortiran gelembung. Kodenya adalah sebagai berikut:
fungsi selectsort (array) {var min, temp; ; untuk (var i = 0; i <array.length; i ++) {min = i; untuk (var j = i+1; j <array.length; j ++) {if (array [min]> array [j]) min = j; } if (min! = i) {temp = array [i]; array [i] = array [min]; array [min] = temp; } /* Hasil output* /document.write ("+ i+" Hasil pemesanan lulus adalah: ") untuk (var n = 0; n <array.length; n ++) {document.write (array [n]+", ");} Document.write (" <br /> ") /* Hasil output berakhir* /}}}}}Penyortiran kompleks
Jenis bukit
Penyortiran Hill adalah peningkatan penyortiran penyisipan. Pada tahun 1959, Hill menerobos kompleksitas waktu N Square dengan mengubah perbandingan berpasangan dalam penyortiran sederhana untuk mengatur perbandingan lompatan lompatan langkah. Penyortiran Hill beralih dari nlogna terbaik ke persegi N terburuk sesuai dengan kompleksitas waktu yang berbeda dari ukuran langkah. Kodenya adalah sebagai berikut:
function shallsort (array) {var increment = array.length; var i var temp; // simpan var count = 0; do {increment = math.floor (increment / 3) + 1; untuk (i = increment; i <array.length; i ++) {if (array [i] <array [i - increment]) {temp = array [i]; untuk (var j = i - increment; j> 0 && temp <array [j]; j - = increment) {array [j + increment] = array [j]; } array [j + increment] = temp; /* Hasil output*/ count ++; document.write ("<br />+ count+" Hasil pemesanan umpan adalah: ") untuk (var n = 0; n <array.length; n ++) {document.write (array [n]+", ");} /* hasil output berakhir* /}} sementara (tambahan> 1)}}Tumpukan penyortiran
Heap Sorting adalah upgrade untuk memilih penyortiran. Dengan terus membangun tumpukan atas besar atau tumpukan atas kecil, memilih nilai terbesar atau terkecil dan meletakkannya di ujung depan antrian untuk disortir. Kompleksitas waktu penyortiran heap dalam hal apa pun adalah nlogn, kodenya adalah sebagai berikut:
Function heapsort (array) {var temp; var i; untuk (i = math.floor (array.length / 2); i> = 0; i--) {heapadjust (array, i, array.length-1); // Bangun array array ke dalam tumpukan atas besar} untuk (i = array.length-1; i> = 0; i--) {/*Swap node root keluar*/temp = array [i]; array [i] = array [0]; array [0] = temp; /*Array yang tersisa terus dibangun ke dalam tumpukan atas besar*/ heapadjust (array, 0, i - 1); /* Hasil output*/document.write ("<br/>+ (array.length - i) .toString ()+" Hasil dari pemesanan lulus adalah: ") untuk (var n = 0; n <array.length; n ++) {dokumen. Subskrip untuk array // Max adalah subskrip akhir dari fungsi array heapadjust (array, start, max) {var temp, j; if (temp> = array [j]) break;Gabungan
Gabungkan penyortiran adalah satu -satunya penyortiran yang stabil dalam penyortiran yang kompleks. Ini menyortir dengan membelah dan kemudian menggabungkan array untuk diurutkan. Kuadrat kompleksitas waktu penyortiran gabungan adalah n. Kodenya adalah sebagai berikut:
// sumber array sumber // array target dest // s start subscript // t fungsi subscript target msort (sumber, dest, s, t) {var m; // pilih nilai menengah var dest2 = array baru (); if (s == t) {dest [s] = sumber [s]; } else {m = math.floor ((s + t) / 2); msort (sumber, dest2, m+1, t); gabungan (dest2, dest, s, m, t); /* Output result*/ document.write("<br />+ ++count + "The result of pass sorting is:") for (var n = 0; n < dest.length; n++) { document.write(array[n] + ","); } /* The output result ends*/ } } //Fusing two arrays in order from small to large//source original array//dest sorted array//s first Subscript // M Subscript Array Kedua // Gabungan Fungsi Panjang Total (Sumber, Dest, S, M, N) {for (var j = m+1, k = s; j <= n && s <= m; k ++) {if} {sumber] {km] = Sumber [k] = Sumber [S ++; Akhir DEST if (s <= m) {untuk (var l = 0; l <= m - s; l ++) {dest [k+l] = sumber [s+l]}} if (j <= n) {untuk (var l = 0; l <= n - j; l ++) {dest [k+l] = sumberSortir cepat
Jenis cepat adalah jenis tercepat yang diketahui, dengan kompleksitas waktu Nlogn, dan kodenya adalah sebagai berikut:
var count = 0; function quicksort (array, rendah, tinggi) {var temp; if (rendah <tinggi) {var keypoint = quicksorthelp (array, rendah, tinggi); Count ++; Document.write ("<br /> terminal? + hitung +" Hasil pemesanan pemesanan adalah?: ") untuk (var l = 0; l <array.length; l ++) {document.write (array [l] +", ");} quicksort (array, low, keypoint - 1); quickort, array, array, quicksort (array + low, keypoint - 1); quickort (array, array, KEPPUTIF); rendah) {while (High) {while (Low <High && Array [Low] <= Array [High]) {High-- array [tinggi];Ringkasan di atas berbagai metode penyortiran (implementasi JS) dalam struktur data adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.