- yuxitong's blog
更符合参赛者宝宝体制的计数排序
- 2023-10-7 12:55:13 @
概念:
计数排序是一种稳定的排序算法,它需要另外一个数组,这个数组的第i项是原数组中i出现的个数。通过统计数出现的个数,再把数一个个放回去,就实现了排序的效果。
缺点:会消耗内存,不适用最大值太大的数组
优点:比快速排序快,更能够节省时间复杂度
代码:
//顶级垃圾程序
//A very bad program
#include <bits/stdc++.h>
using namespace std;
int arr[100];
int n;
void CountSort(int arr[], int n){
int maxn = INT_MIN, minn = INT_MAX, brr[10000 + 1], cnt = 0;
memset(brr, 0, sizeof(brr));
for (int i = 0; i < n; i++){
brr[arr[i]]++;
if (maxn < arr[i]) maxn = arr[i];
if (minn > arr[i]) minn = arr[i];
}
for (int i = minn; i <= maxn; i++){
if (brr[i]){
while(brr[i]--){
arr[cnt] = i;
cnt++;
}
}
}
}
int main(){
cin >> n;
for (int i = 0; i < n; i++) cin >> arr[i];
CountSort(arr, n);
for (int i = 0; i < n; i++) cout << arr[i] << " ";
return 0;
}
例子
10
234 456 5673 3123 3595 222 6 7 23 195