【C】排序
用空间换时间的策略/基数排序,比公网上其他介绍简洁一点。

我不喜欢写注释,因为我不会侮辱读者的智商。
正文要超过200字才能投稿,附上代码:
#include<iostream>
void sort(int* array, int k, int max, int length){
const int bs=10;
int arrayret[length]={0};
int base[bs]{0};
for(int i=0; i<length; i++){
base[(array[i]/k)%bs]++;
}
for(int i=1; i<bs; i++){
base[i]+=base[i-1];
}
for(int i=length-1; i>=0; i--){
arrayret[--base[(array[i]/k)%10]]=array[i];
}
for(int i=0; i<length; i++){
array[i]=arrayret[i];
}
k*=10;
if(k<max){
sort(array,k,max,length);
}
}
void sort(int* array,int length){
sort(array,1,10000000,length);
}
int main(){
int a[8]={324,55,335,667,23,67,40,38};
sort(a,8);
for(unsigned i=0; i<8; i++){
std::cout<<a[i]<<" ";
}
}