希尔排序: 先追求表中元素部分有序,再逐渐逼近全局有序
1.先将待排序表分割为若干形如 L[i,i+d,i+2d,…,i+kd]的"特殊"子表,即把相隔某个 "增量 " 的记录组成一个子表
2.对各个子表分别进行直接插入排序
3.当整个表中的元素已呈“基本有序”时,再对全体记录进行一次直接插入排序。
public class 希尔排序 { public static void main(String[] args) { // int nums[]={6,1,3,2,4}; int nums[]={49,38,65,97,76,13,27,49,55,04}; sort(nums); System.out.println(Arrays.toString(nums)); } static void sort(int[]nums){ int n = nums.length; int j,dk; for (dk=n/2;dk>=1;dk=dk/2){ //步长变化 //注意此处 for (int i=dk;i= 0 //给 "同一个子表" 中 "后面的小元素" 的插入位置腾出空间 for (j=i-dk;j>=0 && temp 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)