5.1 算法的目标
5.2 算法的基本思想
插入排序的优化,尽可能的使较小的元素排在前面,使排序性能更加优化。
记录按照下标的一定增量分组,对每组使用直接插入排序,直至增量减少为1,整个数组排序结束。
5.3 算法的具体步骤
以数组[63,76,13,44,91,8,82,3]为例
step1:首先根据数组的长度确定排序的次数为:length/2-1次
step2:确定第一次排序的组数(相同颜色为一组)
对每组进行插入排序操作进行排序 ,得到结果
step3:确定第二次排序的组数(相同颜色为一组)
对每组进行插入排序操作进行排序 ,得到结果
step4:确定第三次排序的组数(相同颜色为一组)
此时为最后一组,进行普通的插入排序
/*** 希尔排序* @param nums*/public static void sort(int []nums){//确定排序的总次数for (int i = nums.length/2; i >0 ; i/=2) {//确定每次排序的组数for (int j = i; j <nums.length ; j++) {//对于每组进行插入排序操作int indexvalue=nums[j],index=j-i;while (index>=0&&nums[index]>indexvalue){nums[index+i]=nums[index];index-=i;}nums[index+i]=indexvalue;}System.out.print("第"+i+"次排序的结果为:");System.out.println(Arrays.toString(nums));}}
