class CountingSort {
public:
int * countingSort(int* A, int n) {
// write code here
int min_ = A[0];
int max_ = A[0];
for (int i = 0; i<n; i++){
if (A[i]<min_){
min_ = A[i];
}
if (A[i]>max_){
max_ = A[i];
}
}
int len = max_ - min_ + 1;
int *B = new int[len+1];
int *C = new int[n];
memset(B,0,sizeof(int)*(len+1));
memset(C,0,sizeof(int)*(n) );
for (int i = 0; i<n; i++){
B[A[i] - min_]++;
}
for (int i = 1; i <= len; i++){
B[i]+= B[i - 1];
}
int j = 0;
for (int i = 0; i<n; i++){
C[B[A[i] - min_] - 1] = A[i];
B[A[i]-min_]--;
}
return C;
}
};
计数排序
最新推荐文章于 2024-08-12 19:17:28 发布