线性排序之记数排序
来源:互联网 发布:网络弹棉花是什么意思 编辑:程序博客网 时间:2024/06/05 15:01
#include<iostream>using namespace std;//记数排序//此是一个非比较的排序,故时间复杂度为n//典型的用空间换时间/**记数排序的思想:*假设待排序的数组为A,开一个与A大小相等的数组B*记数排序,规定待排序的数都小于k,那么开一个大小为k的数组C,*数组C记录各个大小的数出现的次数 */ void CountSort(int *a,int *b,int *c){ for(int i=0;i<8;i++) { c[i]=0; } for(int j=0;j<7;j++) { c[a[j]]++; } for(int m=1;m<8;m++) { c[m]=c[m]+c[m-1]; } for(int n=6;n>=0;n--) { b[c[a[n]]-1]=a[n]; c[a[n]]--; }}int main(){ int A[]={1,5,2,3,7,6,1}; int B[7],C[8]; CountSort(A,B,C); for(int i=0;i<7;i++) { cout<<B[i]<<" "; } system("pause"); return 0;}