pub fn heap_sort<T: Ord>(arr: &mut [T])Expand description
Heap sort — max-heap (uyum) yordamida tartiblash.
G’oya (2 bosqich):
- Massivni max-heapga aylantiramiz (
build_heap, O(n)); - n marta: ildizdagi (eng katta) elementni oxirgi element bilan almashtiramiz,
heap hajmini bittaga kamaytiramiz va ildizni
sift_downbilan joyiga tushiramiz.
Kuchli tomoni: qo’shimcha xotira umuman kerak emas, va eng yomon holat ham kafolatlangan O(n log n) (quick sortdan farqli). Zaif tomoni: keshga do’st emas — shuning uchun amalda quick sortdan sekinroq.
- Time: O(n log n) har doim, Space: O(1), barqaror emas.
§Misol
use rust_algorithms::sorting::heap_sort;
let mut v = vec![12, 11, 13, 5, 6, 7];
heap_sort(&mut v);
assert_eq!(v, [5, 6, 7, 11, 12, 13]);