package lsn1.sjjg.cct.cn.lsn1; import org.junit.Test; /** * 希尔排序 * Created by linyaokui on 17/12/8. */ public class ShellSort { @Test public void test(){ int[] array=new int[]{3,9,1,2,5,4,7,8,6}; insertSort(array,2); for (int i : array){ System.out.print(i + " "); } System.out.println(" "); insertSort(array,1); for (int i : array){ System.out.print(i + " "); } } /** * 希尔排序 * * @param array 需要排序的数组 * @param step 步长 */ public void insertSort(int[] array, int step) { for (int k = 0; k < step; k++) { //对步长的定位,选择每次操作的开始位置 for (int i = k+step; i < array.length; i+=step) { int target = array[i]; // 要插入的目标数据 int j = i; // 如果j移动到0 或者发现比它小的就停止插入 while (j > step+k-1 && array[j - step] > target) { array[j] = array[j - step]; j-=step; } array[j] = target; //执行插入 } } } }
希尔排序
最新推荐文章于 2024-09-13 18:22:36 发布