10 000 integer numbers in an array, Each number is 10 bit. Sort the array
10 bit means there's only 2^10 = 1024 possible values. Use counting sort. Create an array of 1024 integers and in the i-th index keep the number of occurrences of the i-th possibility. IN the end, just traverse your occurrence count array printing each element the number of times that it occurs.
#include <cstdio>
#include <iostream>
using namespace std;
int main(){
int cnt[1024],count = 0,tmp;
freopen("i.txt","r",stdin);
for(int i = 0; i < 1024; i++){
cnt[i] = 0;
}
/*scan number*/
while(scanf("%d",&tmp) == 1){
cnt[tmp]++;
}
for(int i = 0; i < 1024; i++){
while(cnt[i]){
printf("%d\n",i);
cnt[i]--;
}
}
return 0;
}
No comments:
Post a Comment