首页 > 代码库 > 比较计数排序
比较计数排序
计数排序的基本思想是对于给定的输入序列中的每一个元素x,确定该序列中值小于x的元素的个数。一旦有了这个信息,就可以将x直接存放到最终的输出序列的正确位置上。例如,如果输入序列中只有17个元素的值小于x的值,则x可以直接存放在输出序列的第18个位置上。当然,如果有多个元素具有相同的值时,我们不能将这些元素放在输出序列的同一个位置上,因此,上述方案还要作适当的修改。
//计数排序#include <stdio.h>//n为个数,k为最大值,b为输出void CountingSort(int a[], int b[], int n){ int count[6]; int i,j; for (i=0;i<n;i++) { count[i]=0; } for (i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if(a[i]<a[j]) count[j]++; else count[i]++; } } for(i=0;i<n;i++) { b[count[i]]=a[i]; }}void main(){ int num[6] = {23,45,13,2,99,78}; int out[6]; int i; printf("排序前\n"); for ( i = 0; i < 6; i++) { printf("%d ",num[i]); } printf("\n"); CountingSort(num, out, 6); printf("排序后\n"); for (i = 0; i < 6; i++) { printf("%d ",out[i]); } printf("\n");}
比较计数排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。