您的位置:首页 > 运维架构 > Shell

排序- 希尔排序 ShellSort

2017-10-11 10:40 309 查看
package genius.sort;

import java.util.Arrays;

public class ShellSortFinal {
public static void shellSortSmallToBig(int[] data) {
int j = 0;
int temp = 0;
//外循环控制循环的次数,也就是分组希尔排序的次数....直到分组个数为1.。。
System.out.println("the length of the array is "+data.length);
for (int increment = data.length / 2; increment > 0; increment /= 2) {
System.out.println("当分组数为increment:" + increment);
for (int i = increment; i < data.length; i++) {
temp = data[i];
for (j = i - increment; j >= 0; j -= increment) {
/* System.out.println("j:" + j);
System.out.println("temp:" + temp);
System.out.println("data[" + j + "]:" + data[j]);*/
if (temp < data[j]) {
data[j + increment] = data[j];
} else {
break;
}
}
data[j + increment] = temp;
}
for (int i = 0; i < data.length; i++){
System.out.print(data[i] + " ");
}
System.out.print("\n");
}
}

public static void main(String[] args) {
int[] data = new int[] { 26, 53, 67, 48, 57, 13, 48, 32, 60, 50 ,1};
System.out.println(Arrays.toString(data));
shellSortSmallToBig(data);
System.out.println("ShellSortFinal.main() Excuted the final Result.......");
System.out.println(Arrays.toString(data));
}

}


[26, 53, 67, 48, 57, 13, 48, 32, 60, 50, 1]
the length of the array is 11
当分组数为increment:5
1 48 32 48 50 13 53 67 60 57 26
当分组数为increment:2
1 13 26 48 32 48 50 57 53 67 60
当分组数为increment:1
1 13 26 32 48 48 50 53 57 60 67
ShellSortFinal.main() Excuted the final Result.......
[1, 13, 26, 32, 48, 48, 50, 53, 57, 60, 67]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: