mata utama
Asas dan Praktikal:Apakah tujuan algoritma penyortiran?
Algoritma menyusun terutamanya digunakan untuk menyusun semula sejumlah besar data dengan cara yang cekap untuk memudahkan untuk mencari dan memanipulasi mereka. Mereka juga digunakan untuk meningkatkan kecekapan algoritma lain seperti carian dan penggabungan yang bergantung kepada data yang disusun untuk beroperasi.
Mengapa algoritma penyortiran begitu penting?
Algoritma penyortiran digunakan untuk menganjurkan data dalam urutan tertentu, yang menjadikannya lebih mudah untuk mencari, mengakses, dan menganalisis data. Dalam banyak aplikasi, penyortiran adalah bahagian utama aliran pemprosesan data, dan kecekapan algoritma penyortiran boleh memberi kesan yang signifikan terhadap prestasi keseluruhan sistem.
Dalam pangkalan data: jenis digunakan untuk mendapatkan rekod dalam urutan tertentu, seperti tarikh, abjad atau urutan berangka. Ini membolehkan pengguna dengan cepat mencari data yang mereka perlukan tanpa mencari secara manual sejumlah besar data yang tidak disusun.
Dalam enjin carian:
Algoritma ini membandingkan unsur -unsur dataset dan menentukan pesanan mereka berdasarkan hasil perbandingan. Contoh algoritma penyortiran berasaskan perbandingan termasuk jenis gelembung, memasukkan jenis, jenis cepat, jenis gabungan, dan jenis timbunan.
Algoritma ini tidak membandingkan unsur -unsur secara langsung, tetapi gunakan sifat -sifat lain dari dataset untuk menentukan pesanan mereka. Contoh-contoh algoritma penyortiran berasaskan bukan perbandingan termasuk penyortiran kiraan, penyortiran kardinaliti, dan penyortiran baldi.
algoritma ini menyusun dataset dalam situ, yang bermaksud mereka tidak memerlukan memori tambahan untuk menyimpan hasil pertengahan. Contoh algoritma penyortiran dalam situ termasuk penyortiran gelembung, memasukkan penyortiran, penyortiran cepat, dan penyortiran bukit.
Algoritma ini mengekalkan urutan relatif elemen seperti dataset. Contoh algoritma penyortiran yang stabil termasuk memasukkan jenis, gabungan, dan timsort.
Algoritma ini menggunakan sebarang pesanan sedia ada dalam dataset untuk meningkatkan kecekapan mereka. Contoh algoritma penyortiran penyesuaian termasuk memasukkan penyisihan, penyortiran gelembung, dan timsort.
Algoritma Penyortiran Sepuluh Top yang perlu diketahui
Sekarang mari kita lihat pada sepuluh algoritma penyortiran teratas yang perlu anda perhatikan ketika memilih algoritma penyortiran.
Bubblestone adalah algoritma penyortiran yang mudah yang melelehkan senarai item yang diberikan, membandingkan setiap sepasang item bersebelahan, dan menukarnya jika mereka tidak betul. Algoritma berterusan sehingga ia melintasi keseluruhan senarai tanpa bertukar -tukar apa -apa item. Penyortiran gelembung kadang -kadang dipanggil "penyortiran tenggelam".
kebaikan dan kekurangan penyortiran gelembung
Penerangan Teknikal: O (N^2) Kompleks bermakna bahawa masa yang diperlukan untuk algoritma diselesaikan adalah berkadar dengan kuadrat saiz input. Ini bermakna saiz input yang lebih besar akan menyebabkan algoritma selesai lebih lama. Sebagai contoh, jika anda menganggap algoritma yang menyusun pelbagai nombor, ia mungkin mengambil satu saat untuk menyusun pelbagai nombor sepuluh, tetapi mungkin mengambil masa empat saat untuk menyusun pelbagai 20 nombor. Ini kerana algoritma perlu membandingkan setiap elemen dalam array dengan setiap elemen lain, jadi ia harus membandingkan array yang lebih besar 20 kali dan array yang lebih kecil hanya 10 kali.
Walau bagaimanapun, sangat mudah difahami dan dilaksanakan dan sering digunakan sebagai pengenalan kepada penyortiran dan blok bangunan untuk algoritma yang lebih kompleks. Tetapi sekarang ia jarang digunakan dalam amalan.kes pengguna untuk menyusun gelembung
def bubble_sort(items): for i in range(len(items)): for j in range(len(items)-1-i): if items[j] > items[j+1]: items[j], items[j+1] = items[j+1], items[j] return items items = [6,20,8,19,56,23,87,41,49,53] print(bubble_sort(items))
function bubbleSort(items) { let swapped; do { swapped = false; for (let i = 0; i < items.length - 1; i++) { if (items[i] > items[i + 1]) { let temp = items[i]; items[i] = items[i + 1]; items[i + 1] = temp; swapped = true; } } } while (swapped); return items; } let items = [6, 20, 8, 19, 56, 23, 87, 41, 49, 53]; console.log(bubbleSort(items));
Masukkan Sort
Cepat jenis
Bucket Sort
Hill Sort
Sort Hill menggunakan algoritma penyisihan memasukkan, tetapi bukannya menyusun keseluruhan senarai sekaligus, ia membahagikan senarai ke dalam sublists yang lebih kecil. Sublists ini kemudian disusun menggunakan algoritma sisipan sisipan, dengan itu mengurangkan bilangan swap yang diperlukan untuk menyusun senarai.
Pilih Sort
jenis hitam
Susun sikat membandingkan pasangan unsur -unsur yang jarak tertentu, dan jika mereka tidak betul, swapnya.
timsort
Algoritma Timsort berfungsi dengan membahagikan data input ke dalam subarray yang lebih kecil dan kemudian menyusun subarray ini menggunakan jenis sisipan.
Perbandingan semua algoritma penyortiran
Sila ambil perhatian bahawa kerumitan masa dan kerumitan spatial yang disenaraikan dalam jadual adalah
kerumitan kes terburuk, dan prestasi sebenar mungkin berbeza -beza bergantung kepada pelaksanaan tertentu dan data input. Apakah algoritma penyortiran yang paling biasa digunakan? Algoritma penyortiran yang paling biasa digunakan mungkin menyusun cepat. Ia digunakan secara meluas dalam banyak bahasa pengaturcaraan (termasuk C, C, Java, dan Python), serta dalam banyak aplikasi dan perpustakaan perisian. Penyortiran cepat disukai untuk kecekapan dan fleksibiliti dalam mengendalikan pelbagai jenis data dan sering digunakan sebagai algoritma penyortiran lalai dalam bahasa pengaturcaraan dan kerangka perisian. Walau bagaimanapun, algoritma penyortiran lain seperti jenis gabungan dan timsort juga digunakan secara meluas dalam pelbagai aplikasi kerana kecekapan dan keupayaan uniknya. (kandungan yang tinggal, seperti ringkasan, FAQ, dan lain -lain, telah ditinggalkan kerana batasan ruang.)
算法
时间复杂度
空间复杂度
原地排序
稳定排序
自适应排序
冒泡排序
O(n^2)
O(1)
是
是
否
快速排序
O(n log n)
O(log n)
是
否
是
桶排序
O(n k)
O(n k)
否
是
否
希尔排序
O(n log n)
O(1)
是
否
否
合并排序
O(n log n)
O(n)
否
是
否
选择排序
O(n^2)
O(1)
是
否
否
基数排序
O(w·n)
O(w n)
否
是
否
梳排序
O(n^2)
O(1)
是
否
是
Timsort
O(n log n)
O(n)
是
是
是
Atas ialah kandungan terperinci 10 algoritma penyortiran terbaik dijelaskan, dengan contoh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!