台球

首页 » 常识 » 诊断 » 小米面试台球的希尔排序
TUhjnbcbe - 2022/11/16 21:32:00

今天,我们来看一道小米面试的题目,很直白,也很简单,那就是希尔排序。

按常理来说,快速排序和堆排序才是常考的内容,希尔排序出现的频率很低。

这也启发大家,在准备笔试面试的时候,不仅要注意深度,也需要注意广度。

图解希尔排序

原始的数组如下,有一点台球的感觉吧:

接下来,我们对这个数组进行希尔排序,希尔排序的本质是缩小增量排序,我们来看看,是如何逐步缩小增量的。

第一步:

元素个数n=10,那么gap=5,接下来,我们来分为5组,如下:

在5组内分别进行插入排序,得到的结果为:

第二步:

我们让gap再次减半,也就是gap=2,于是重新分为2组,如下:

在2组内分别进行插入排序,得到的结果为:

第三步:

我们让gap再次减半,即gap=1,也就是分为1组,得到的结果为:

在1组内进行插入排序,得到的结果为:

这就是希尔排序的全部过程,思路非常简单,抓住缩小增量这个本质就行。通过不断缩小gap的值,在每个组内进行插入排序。

当然,小米的面试题肯定不会就此让你轻松结束,肯定会问时间复杂度和空间复杂度,所以,在准备面试时也不要忽略基本功。

希尔排序程序

既然思路已经完全说清楚了,那么程序就相对简单了,来看看希尔排序的程序:

结果为:

希尔排序的思路和程序并不难,但常常容易被忽略,导致笔试面试会比较被动。

*声明:本文于网络整理,版权归原作者所有,如来源信息有误或侵犯权益,请联系我们删除或授权事宜。

1
查看完整版本: 小米面试台球的希尔排序