【发布时间】:2020-01-26 04:27:35
【问题描述】:
我正在进入编程领域,如果我遗漏了一些明显的东西,请原谅。 我有一个基本的 LSD 基数排序和计数排序对。 我将如何将其转换为使用负数? 这种计数排序方式是否可行,还是我需要另一种?
void radixsort(int arr[], int n) {
int m = getMaxElement(arr, n);//Find the maximum number in array.
for (int exp = 1; m/exp > 0; exp *= 10)
CountSort(arr, n, exp);
}
void CountSort(int arr[], int n, int exp) {
int output[n];
int i, c[10] = {0}; // store the number of times in c[]
for (i = 0; i < n; i++)
c[ (arr[i]/exp)%10 ]++;
for (i = 1; i < 10; i++)
c[i] +=c[i - 1];
// Making the output array
for (i = n - 1; i >= 0; i--) {
output[count[ (arr[i]/exp)%10 ] - 1] = arr[i];
c[ (arr[i]/exp)%10 ]--;
}
for (i = 0; i < n; i++)
arr[i] = output[i];
}
【问题讨论】:
-
您可以在排序前后切换符号位。
标签: java algorithm sorting radix-sort counting-sort