本文主要是介绍Java排序算法--希尔排序(Shellsort),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
希尔排序
希尔排序:它通过比较相距一定间隔的元素来工作,各趟比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止。希尔排序也叫缩减增量排序(diminishing increment sort)。
希尔排序使用一个序列h1,h2,h3,…,ht,叫做增量序列(increment sequence)。在使用增量hk的一趟排序之后,对于每一个i我们都有a[i] ≤ a[i+hk],所有相隔hk的元素都被排序,此时称文件是hk排序的(hk-sorted)。希尔排序的一个重要性质:一个hk排序的文件(然后将是hk-1排序的)保持它的hk排序性。
hk排序的一般做法是,对于hk,hk+1,...,N-1中的每一个位置i,把其上的元素放到i,i-hk,i-2hk,...中的正确位置上。一趟hk排序的作用就是对hk个独立的子数组执行一次插入排序。
Shell建议序列:ht=N/2值的下界,hk=h
这篇关于Java排序算法--希尔排序(Shellsort)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!