排序小整数数组的最佳排序算法是什么?

use*_*501 21 java arrays sorting algorithm

根据问题标题,如果数组的长度为奇数,则数组元素的编号为1 - 10.

例,

3 6 8 1 3 7 7 9 4 1

我在考虑使用heapsort?由于它是一个数组,因此合并排序插入排序需要转换,并且不会那么高效.

Mic*_*rdt 32

数组元素的数字为1 - 10.

有了这个限制,计数排序将比任何通用排序算法更有效 - 它是O(n)


ben*_*muc 6

这是我的计数排序示例

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;
}
Run Code Online (Sandbox Code Playgroud)