[url=http://liangge0218.iteye.com/blog/754720]其它排序算法[/url] http://liangge0218.iteye.com/blog/754720
还有就是两个边界,int i = step和 j >= step
public void shellSort(Comparable[] src) {
//初始步长,可以取原长一半,以后每次减半.这个比较简单,好记
int step = src.length / 2;
while (step >= 1) {
// 从step开始,关键(1)是i++,对每个步长间隔都排序
for (int i = step; i < src.length; i++) {
Comparable temp;
// 内部采用的是冒泡排序
for (int j = i; j >= step; j = j - step) {
if (src[j].compareTo(src[j - step]) < 0) {
temp = src[j];
src[j] = src[j - step];
src[j - step] = temp;
} else { // 关键(2)是else中的break; 利用了前面各个step的排序,不用交换的就break
break;
}
}
}
step = (step) / 2;
}
}
还有就是两个边界,int i = step和 j >= step