排序之希尔排序
Posted youzoulalala
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序之希尔排序相关的知识,希望对你有一定的参考价值。
package ShellSort; import chooseSort.Example; /** * 希尔排序 * 思想:插入排序的变步长扩展版。以h..1为步长,将数组分为若干组,然后进行插入排序 * 解决了插入排序交换次数过多的问题。 */ public class ShellSort extends Example @Override public void sort(Comparable[] a) int h = 1; int n = a.length; while(h<n/3) h=h*3+1; //h<n+1 while(h>=1) //遍历所有步长,最后一次步长为1 //步长为h的插入排序 for(int i=h;i<n;i++) for(int j=i;j>h-1&&less(a[j],a[j-h]);j-=h) exch(a,j,j-h); h=h/3; // /** // * 测试用例 // * @param args // */ // public static void main(String[] args) // Integer[] a = new Integer[]34,2,5,4,45,6,22; // ShellSort sort = new ShellSort(); // sort.sort(a); // show(a); // System.out.println(isSorted(a)); //
以上是关于排序之希尔排序的主要内容,如果未能解决你的问题,请参考以下文章