问题描述
/***希尔排序,即分组插入法*/publicstaticvoidShell_Sort(){int[]a={2,4,1,8,5,3,9};System.out.println("排序前:");for(inti:a){System.out.print(i);}System.out.println();inth=1;//希尔排序中元素的间隔while(h<=a.length/3){h=h*3+1;//kunth序列,有其他的产生序列方式}while(h>0){//插入排序部分intout;//需要插入的元素下标intin;for(out=1;out<a.length;out++){inttemp=a[out];in=out;//逐步比较,若是数组的元素大于需要插入的元素则向左移动。否则将元素插入到该位置。间隔为hwhile(in>h-1&&a[in-h]>=temp){a[in]=a[in-h];in-=h;}a[in]=temp;}h=(h-1)/3;//逐步减小序列间的距离}System.out.println("希尔排序后");for(inti:a){System.out.print(i);}}
时间: 2024-09-20 15:51:57