写一下希尔排序
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; } } } }
本人倡导的讲解方式:代码示例[学以致用,不仅要知道理论,还要知道理论怎么付诸实践],
文字讲解[不仅知道要怎么用,还要知道是怎么回事],
画图讲解[有图有真相,用图的形式将代码嵌入到理论中,整体理解]