首页 > 代码库 > 计数排序
计数排序
#include <stdio.h> #include <conio.h> #define MAX 1000 //函数原型 void counting_sort(int A[],int length_A,int B[],int k); //测试代码 void main() { int A[]={-3,2,6,5,4,8,9,7,0,10,3};//1到10,十个测试数据 int B[11]={0}; int k=10;//所有测试数据都处于0到k之间 counting_sort(A,10,B,k); for(int i=1;i<11;i++) printf("%d ",B[i]); getch(); } //计数排序 void counting_sort(int A[],int length_A,int B[],int k) { int C[MAX]={0};//C是临时数组 for(int i=1;i<=length_A;i++) C[A[i]]++; //此时C[i]包含等于i的元素个数 for(i=1;i<=k;i++) C[i]=C[i]+C[i-1]; //此时C[i]包含小于或者等于i的元素个数 for(i=length_A;i>=1;i--)//从length_A到1逆序遍历是为了保证相同元素排序后的相对顺序不改变 { //如果从1到length_A,则相同元素的相对顺序会逆序,但结果也是正确的 B[C[A[i]]]=A[i]; C[A[i]]--; } }
计数排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。