玖叶教程网

前端编程开发入门

javascript希尔排序的核心思路

接下来我们来看一下希尔排序。关于希尔排序,首先希尔排序是插入排序的一种改进,所以如果你们还不太清楚插入排序,请看我上一个视频插入排序。在理解了插入排序之后,再来理解希尔排序就非常简单了,我们来看一下它的思路。

·首先这是一个无序数组,我们首先把这个长度为8的数组拆分成4组,它直接长度除以2,得到了一个一组增量4。其实就是分成四组,比如说5和3一个组,1和6一个组,9和4一个组,8和7一个组,分成四组。

·然后第一趟排序,我们将这四组分别进行插入排序,然后3和5已经有序,就是这四个组1和6,4和9,7和8已经有序。

·那么接下来第一趟排序结束,接下来我们再确定第二组增量,第二组增量是在第一组增量4/2-2,就是这一次增量是2,再下一次就是1,所以我们对目前这两组蓝色的,还有红色的这两组,分别进行一个插入排序。插入排序完毕,第二趟结束。

·接下来我们第三趟排序,第三组增量就是刚才的2/2-1,所以现在就只有一个组,再对这一个组进行一个插入排序,失之有序,第三趟排序结束。

整个希尔排序结束,这个就是它的一个核心思路。

我们总结一下,下面是希尔排序的时间复杂度和稳定性的表格:它是通过交换不相邻元素进行排序的。不错!

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言