当前位置:   article > 正文

(4)希尔排序_希尔排序初始步长为四

希尔排序初始步长为四

基本原理:先将待排序的数组元素分成多个子序列,使得每个子序列的元素个数相对较少,然后对每个子序列分别进行直接插入排序,待整个排序序列“基本有序后”,最后对所以元素进行一次直接插入排序。


初始关键字: 26 53 67 48 57 13 48 32 60 50

                       0    1   2   3  4    5   6   7  8  9 

步长假设为{5,3,1}

所以在第一趟中  

a[0]的26 和a[5]的13进行直接插入

a[1]的53 和a[6]的48进行直接插入

a[2]的67 和a[7]的32进行直接插入

a[3]的48 和a[8]的60进行直接插入

a[4]的57 和a[9]的50进行直接插入

第一趟:      13 48 32 48 50 26 53 67 60 57

第二趟中  

a[0],a[3],a[6],a[9]进行直接插入

a[1],a[4],a[7]进行直接插入

a[2],a[5],a[8]进行直接插入

第二趟: 13 48 26 48 50 32 53 67 60 57

第三趟对所有元素进行一次直接插入排序

第三趟:  13 26 32 48 48 50 53 57 60 67


  1. public static void Select3(int [] a) {
  2. int len = a.length;
  3. for(int h = len/2;h > 0;h=h/2){
  4. for(int i = h;i < len;i++){
  5. int temp = a[i];
  6. for(int j = i - h;j >= 0;j-=h){
  7. if(temp < a[j]){
  8. a[j+h] = a[j];
  9. }else{
  10. break;
  11. }
  12. a[j] = temp;
  13. }
  14. }
  15. }
  16. }


声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号