Skip to main content

radix_sort

Function radix_sort 

Source
pub fn radix_sort(arr: &mut [u64])
Expand description

Radix sort (LSD, 256 lik asos) — sonlarni raqamma-raqam tartiblash.

G’oya: eng past baytdan boshlab, har bir bayt bo’yicha counting sort qilamiz. Counting sort barqaror bo’lgani uchun oldingi bosqichlar natijasi buzilmaydi — 8 ta bosqichdan keyin butun u64 tartiblangan bo’ladi.

  • Time: O(d·(n + b)) = u64 uchun 8·(n + 256) ≈ O(n).
  • Space: O(n + b), barqaror.

Millionlab butun sonlarni tartiblashda sort_unstable dan ham tez bo’lishi mumkin.

§Misol

use rust_algorithms::sorting::radix_sort;

let mut v: Vec<u64> = vec![170, 45, 75, 90, 802, 24, 2, 66];
radix_sort(&mut v);
assert_eq!(v, [2, 24, 45, 66, 75, 90, 170, 802]);

Manfiy sonlar-chi? i64 ni (x as i64 ^ i64::MIN) as u64 ko’rinishida almashtirsangiz (belgi bitini teskari qilib), tartib saqlanadi.