本帖最后由 何旭栋 于 2012-7-5 02:19 编辑
- public void ShellSort(int[] arr) {
- int Index, Temp, x;
- int Length = arr.length;
- int DataLen = Length >> 1;
-
- while (DataLen != 0) // 数列仍可进行分割
- {
- for (x = DataLen; x < Length; x++) {
- Temp = arr[x];
- Index = x - DataLen; // 计算进行处理的位置
- // 进行集合内数值的比较与交换值
- while (Index >= 0 && Temp < arr[Index]) {
- arr[Index + DataLen] = arr[Index];
- Index = Index - DataLen;
- }<font color="#ff0000">//这个while循环有点看不懂,高手帮忙讲解下</font>
- // 与最后的数值交换
- arr[Index + DataLen] = Temp;
- }
- DataLen = DataLen >> 1; // 计算下次分割的间隔长度
- }
- }
复制代码 记得毕老师讲排序时候说过希尔排序,上网找了希尔排序看看,结果看了半天没搞懂。。。 |
|