【C】排序
用空間換時(shí)間的策略/基數(shù)排序,比公網(wǎng)上其他介紹簡(jiǎn)潔一點(diǎn)。

我不喜歡寫注釋,因?yàn)槲也粫?huì)侮辱讀者的智商。
正文要超過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]<<" ";
?? ?}
}