写一下希尔排序
public class MergeSortTest {
public static void main(String[] args) {
int[] arr ={4,7,3,5,6,2,8,1};
shellSort(arr);
System.out.println(Arrays.toString(arr));
}
/**
* 希尔排序就是通过每次算出不同的间距,
* 然后按照这个间距进行插入排序
* 像该例子中的第一轮是4间距,
* 那么就分别对下标分别为
* 0 4
* 1 5
* 2 6
* 3 7
* 四组进行插入排序
* 接着进行下一轮间距为2
* 最后间距为1
* 最终完成排序
* @param data
*/
public static void shellSort(int[] data){
int len = data.length;
for(int add = len/2;add>0;add=add/2){
for(int i=add;i<len;i++){
int item = data[i];
int j=i-add;
for(;j>=0;j-=add){
if(data[j]>item){
data[j+add]=data[j];
}else{
break;
}
}
data[j+add] = item;
}
}
}
}
本人倡导的讲解方式:代码示例[学以致用,不仅要知道理论,还要知道理论怎么付诸实践],
文字讲解[不仅知道要怎么用,还要知道是怎么回事],
画图讲解[有图有真相,用图的形式将代码嵌入到理论中,整体理解]

浙公网安备 33010602011771号