根据题目,如果数组的长度为奇数,并且数组元素的编号为1- 10。
例如,
3 6 8 1 3 7 7 9 4 1
我在考虑使用堆排序?由于它是一个数组,合并排序和插入排序需要移位,因此效率不高。
发布于 2011-09-29 17:08:27
数组元素是从1到10的数字。
有了这个限制,counting sort将比任何通用排序算法效率高得多-它是O(n)
发布于 2011-09-29 17:21:36
这是我的计数排序示例
static int[] countingSort(int[] numbers) {
int max = numbers[0];
for (int i = 1; i < numbers.length; i++) {
if (numbers[i] > max)
max = numbers[i];
}
int[] sortedNumbers = new int[max+1];
for (int i = 0; i < numbers.length; i++) {
sortedNumbers[numbers[i]]++;
}
int insertPosition = 0;
for (int i = 0; i <= max; i++) {
for (int j = 0; j < sortedNumbers[i]; j++) {
numbers[insertPosition] = i;
insertPosition++;
}
}
return numbers;
}发布于 2011-09-29 18:01:11
如果只有10个元素,你甚至不值得去担心它。如果有一百万,它可能会开始变得重要。
https://stackoverflow.com/questions/7594929
复制相似问题