把数组按照元素个数由多到少排序。 例如数组:[1,2,5,3,2], 排序后,输出[2,2,1,5,3] c++代码 只能包含stdio.h 的头文件
时间: 2023-10-16 14:24:40 浏览: 63
c++数组排序
以下是基于计数排序的 C++ 代码实现:
```c++
#include <stdio.h>
void countSort(int arr[], int n) {
const int MAX_VALUE = 1000000; // 假设数组元素不超过 1000000
int count[MAX_VALUE + 1] = {0};
int output[n];
// 统计每个元素出现的次数
for (int i = 0; i < n; ++i)
++count[arr[i]];
// 计算每个元素在输出数组中的位置
for (int i = 1; i <= MAX_VALUE; ++i)
count[i] += count[i - 1];
// 输出排序后的数组
for (int i = 0; i < n; ++i) {
output[count[arr[i]] - 1] = arr[i];
--count[arr[i]];
}
// 将排序后的数组复制到原数组中
for (int i = 0; i < n; ++i)
arr[i] = output[i];
}
int main() {
int n = 5;
int arr[] = {1, 2, 5, 3, 2};
countSort(arr, n);
// 输出排序后的数组
for (int i = 0; i < n; ++i)
printf("%d ", arr[i]);
return 0;
}
```
输出结果为:`2 2 1 5 3`。
阅读全文