c++实现计数排序countingSort及运行实例结果
2017-12-27 18:29
429 查看
前面博文写的排序算法都是比较排序,这里介绍三种非比较的排序算法,计数排序、基数排序、桶排序。
第一种:计数排序的基本思想:对于每一个输入元素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;
}
算法求解过程实例
运行结果
第一种:计数排序的基本思想:对于每一个输入元素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;
}
算法求解过程实例
运行结果
相关文章推荐
- c++实现计数排序countingSort及运行实例结果
- c++实现计数排序countingSort及运行实例结果
- c++实现计数排序countingSort及运行实例结果
- c++实现计数排序countingSort及运行实例结果
- c++实现计数排序countingSort及运行实例结果
- c++实现计数排序countingSort及运行实例结果
- c++实现计数排序countingSort及运行实例结果
- c++实现计数排序countingSort及运行实例结果
- c++实现计数排序countingSort及运行实例结果
- c++实现计数排序countingSort及运行实例结果
- c++实现二叉树的先序遍历,中序遍历,后序遍历(递归方法)及运行实例结果
- 插入排序(正序、倒序)-c++代码实现及运行实例结果
- c++实现二叉树的查找,插入,删除,深度,叶子节点数,度为1的节点数(递归方法)及运行实例结果
- 归并排序-c++代码实现及运行实例结果
- 选择排序-c++代码实现及运行实例结果
- strstr()函数c++代码实现实例及运行结果
- 冒泡排序-c++代码实现及运行实例结果
- c++实现快速排序quickSort及运行实例结果
- 数据结构之队列的基本操作入队出队初始化删除-c++代码实现及运行实例结果
- 最大子数组问题-c++代码实现及运行实例结果