对于一个int数组,请编写一个计数排序算法,对数组元素排序。
给定一个int数组A及数组的大小n,请返回排序后的数组。
测试样例:
[1,2,3,5,2,3],6
[1,2,2,3,3,5]
class CountingSort {
public:
int max,min;
void max_min(int*A, int n, int &max, int &min){
if(A[0]>A[1]){
max = A[0];
min = A[1];
}else{
min = A[0];
max = A[1];
}
for(int i=2; i<n; i++){
if(A[i] > max){
max = A[i];
}
if(A[i] < min){
min = A[i];
}
}
}
int* countingSort(int* A, int n) {
// write code here
max_min(A,n,max,min);
int len=max-min+1;
vector<int> nums(len,0);
for(int i=0;i<n;i++)
{
nums[A[i]-min]++;
}
int p=0;
for(int i=0;i<len;i++)
{
for(int j=0;j<nums[i];j++)
{
A[p]=i+min;
p++;
}
}
return A;
}
};