排序算法shell sort

其它排序算法  http://liangge0218.iteye.com/blog/754720
	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

你可能感兴趣的:(算法,Blog,J#)