赞
踩
基本原理:先将待排序的数组元素分成多个子序列,使得每个子序列的元素个数相对较少,然后对每个子序列分别进行直接插入排序,待整个排序序列“基本有序后”,最后对所以元素进行一次直接插入排序。
初始关键字: 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
- public static void Select3(int [] a) {
- int len = a.length;
- for(int h = len/2;h > 0;h=h/2){
- for(int i = h;i < len;i++){
- int temp = a[i];
- for(int j = i - h;j >= 0;j-=h){
- if(temp < a[j]){
- a[j+h] = a[j];
- }else{
- break;
- }
- a[j] = temp;
- }
- }
- }
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。