以下是我要解决的问题......
Shell排序是冒泡排序的变体。而不是比较相邻 值,Shell排序调整二进制搜索的概念来确定a 在任何交换发生之前比较价值的“差距”。在里面 第一次通过,间隙是阵列大小的一半。对于每个后续的传球, 间隙大小减少一半。对于最后的传递,间隙大小为1,因此它将是 与冒泡排序相同。传递继续,直到没有掉头
这是我的代码:
public class Shellsort {
protected int[] array= {9,6,8,12,3,1,7};
protected int gap;
public Shellsort() {
gap=array.length/2;
for (int y=0; y<=gap; y++){
for(int a=gap; a<=array.length; a++){
if(array[y]>array[array.length]){
swap(array[y],array[array.length]);
}
a++;
y++;
}
}
public int swap (int x, int z){
x=array[y];
z=array[array.length];
return (z, x);
}
}
}
这是我能够提供的,有人可以向我推荐一些建议/输入来完成这个问题。
答案 0 :(得分:0)
array [array.length]无效,因为索引从0开始。要获取数组中的最后一个元素,你可以做数组[array.length - 1]