拜托,面试别再问我基数排序了!!!

  1. 云栖社区>
  2. 阿里云MVP>
  3. 博客>
  4. 正文

拜托,面试别再问我基数排序了!!!

初商 2019-08-09 21:43:49 浏览169
展开阅读全文

排序,面试中考察基本功问的比较多,工作多年以后,对排序的细节记忆不那么清楚的小伙伴,面试时会比较吃亏。

有一种很神奇的排序,基数排序(Radix Sort),时间复杂度为O(n),今天花1分钟,通过几幅图,争取让大家搞懂细节。

画外音:居然还有时间复杂度为O(n)的排序算法?不但有,其实还有很多。

举个栗子:

假设待排序的数组arr={72, 11, 82, 32, 44, 13, 17, 95, 54, 28, 79, 56}

image.png

基数排序的两个关键要点:

(1)基:被排序的元素的“个位”“十位”“百位”,暂且叫“基”,栗子中“基”的个数是2(个位和十位);

画外音:来自野史,大神可帮忙修正。

(2)桶:“基”的每一位,都有一个取值范围,栗子中“基”的取值范围是0-9共10种,所以需要10个桶(bucket),来存放被排序的元素;

基数排序的算法步骤

网友评论

登录后评论
0/500
评论
初商
+ 关注
所属云栖号: 阿里云MVP