浅谈希尔排序

来源:互联网 发布:海量数据备份 编辑:程序博客网 时间:2024/06/05 18:42

希尔排序:

先选定一个下标增量d,将整个序列按增量d从第一个元素开始划分为若干组,对每组使用直接插入排序的方法;然后减小增量d,不断重复上述过程,如此下去,直到d=1,此时整个序列是一组

public static void shellSort(int[] numbers) {int d = numbers.length;while(true) {  if (d % 2 == 0)d = d / 2;  elsed = d / 2 + 1;for (int i = 0; i < d; i++){  for (int j = i + d; j < numbers.length; j += d) {  int k = j - d;  int temp = numbers[j];  for (; k >= 0 && temp < numbers[k]; k -= d) numbers[k + d] = numbers[k];  numbers[k + d] = temp;  }  }  if (d == 1)         break;  } }

平均时间复杂度:O(n1.3)
1 0
原创粉丝点击