Skip to main content

Module sorting

Module sorting 

Source
Expand description

§Tartiblash algoritmlari (Sorting)

Darslik: 04-sorting/

AlgoritmEng yaxshiO’rtachaEng yomonXotiraBarqaror?
bubble_sortO(n)O(n²)O(n²)O(1)Ha
selection_sortO(n²)O(n²)O(n²)O(1)Yo’q
insertion_sortO(n)O(n²)O(n²)O(1)Ha
shell_sortO(n log n)~O(n^1.3)O(n²)O(1)Yo’q
merge_sortO(n log n)O(n log n)O(n log n)O(n)Ha
quick_sortO(n log n)O(n log n)O(n²)*O(log n)Yo’q
heap_sortO(n log n)O(n log n)O(n log n)O(1)Yo’q
counting_sortO(n+k)O(n+k)O(n+k)O(n+k)Ha
radix_sortO(d·(n+b))O(d·(n+b))O(d·(n+b))O(n+b)Ha
bucket_sortO(n+k)O(n+k)O(n²)O(n)Ha

* median-of-three pivot bilan O(n²) amalda deyarli uchramaydi.

Barqaror (stable) — teng qiymatli elementlarning dastlabki tartibi saqlanadi. Bu “avval ismga, keyin yoshga qarab saralash” kabi ko’p bosqichli saralashda muhim.

§Qaysi birini tanlash?

n kichikmi (< 32)?              → insertion_sort (kesh do'sti, kam qo'shimcha xarajat)
Barqarorlik kerakmi?            → merge_sort
Xotira taqchilmi?               → heap_sort yoki quick_sort
Qiymatlar butun va tor oraliqda?→ counting_sort / radix_sort (n log n dan tez!)
Ishlab chiqarishda (production)?→ slice::sort (TimSort) / sort_unstable (pdqsort)

Amalda Rustning sort() va sort_unstable() idan foydalaning. Bu yerdagi kod — qanday ishlashini tushunish uchun.

Functions§

bubble_sort
Bubble sort — qo’shni elementlarni almashtira-almashtira “pufakchani” yuqoriga chiqarish.
bucket_sort
Bucket sort — qiymatlarni “chelaklarga” taqsimlab, har birini alohida tartiblash.
counting_sort
Counting sort — qiymatlarni sanab, o’z joyiga qo’yish.
heap_sort
Heap sort — max-heap (uyum) yordamida tartiblash.
insertion_sort
Insertion sort — qo’lingizdagi kartalarni terganingizdek.
is_sorted
Slice tartiblanganini (o’sish tartibida) tekshiradi.
merge_sort
Merge sort — “bo’l va hukmronlik qil” (divide & conquer) ning etaloni.
quick_sort
Quick sort — amaliyotdagi eng tez umumiy tartiblash algoritmi.
radix_sort
Radix sort (LSD, 256 lik asos) — sonlarni raqamma-raqam tartiblash.
selection_sort
Selection sort — qolgan qismdan eng kichigini topib, oldinga qo’yish.
shell_sort
Shell sort — insertion sortning “uzoq masofaga sakraydigan” versiyasi.