您的位置:首页 > 编程语言 > C语言/C++

c++实现计数排序countingSort及运行实例结果

2017-12-27 18:29 253 查看
前面博文写的排序算法都是比较排序,这里介绍三种非比较的排序算法,计数排序、基数排序、桶排序。
第一种:计数排序的基本思想:对于每一个输入元素x,确定出小于x的元素的个数。假如有17个元素小于x,则x就属于第18个输出位置。
详见算法导论第三版
伪代码



c++代码

#include <iostream>
#define length 8
using namespace std;

void countingSort(int A[],int B[],int k)
{
int C[k];
for(int i=0;i<=k;++i)//C[i]赋初值0
C[i]=0;
for(int j=0;j<length;++j)
C[A[j]]=C[A[j]]+1;//统计等于A[j]的个数
for(int i=1;i<=k;++i)
C[i]=C[i]+C[i-1];//有多少个元素是小于等于A[i]的
for(int j=length-1;j>=0;--j)
{
B[C[A[j]]-1]=A[j];//注意减了1
C[A[j]]=C[A[j]]-1;//统计的个数减1
}
}

int main()
{
int Array[length]={2,5,3,0,2,3,0,3};
int sortingArray[length]={};
cout<<"原始数据顺序为:"<<endl;
for(int i=0;i<length;++i)
cout<<Array[i]<<" ";
countingSort(Array,sortingArray,5);
cout<<endl<<"经过计数排序后数据顺序为:"<<endl;
for(int i=0;i<length;++i)
cout<<sortingArray[i]<<" ";
return 0;
}



算法求解过程实例



运行结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: