本文介绍: 注意:while循环的条件gap大于1并不是说gap不能为1,而是这里在前面的进入循环的时候就有可能为1了,记住gap是先缩小再使用的,进入循环时(还没有缩小)的gap是上次使用的gap。希尔排序与插入排序很像,单趟排序的思路基本相似,不同的是,插入排序的每次对比一个指向的元素是向前移动一个距离,希尔排序是移动gap个距离,从大到小,最后为1。再进行循环的判断,如果条件不是大于1的话,而是大于等于1,那么gap为1可以进入循环,然后1除1等于1,1+1等于2,就死循环了。
一、插入排序
思路:
插入排序就像玩扑克牌,抽出一张牌作为比较的元素,与前面的牌依次进行比较,小于继续往前比较,大于等于停下插入到当前位置。
图示:
注意:总共的排序次数是n-1趟,即end最多只能到倒数第二个元素,因为如果end为最后一个元素,那么end+1的位置就是越界的。
特性总结:
二、希尔排序
希尔排序与插入排序很像,单趟排序的思路基本相似,不同的是,插入排序的每次对比一个指向的元素是向前移动一个距离,希尔排序是移动gap个距离,从大到小,最后为1
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。