《算法导论》 上的计数排序
来源:互联网 发布:终极一班3 网络点击率 编辑:程序博客网 时间:2024/06/05 09:08
#include <iostream>
#include <string>
using namespace std;
const int MaxN = 40;
void counting_sort(int A[],int B[], int k)
{
int C[MaxN];
//for(int i = 0; i < MaxN; i++)
// C[i] =0;//初始化
memset(C, 0, sizeof(C)/sizeof(C[0]));
for(int i = 0; i < k; i++)
C[A[i]] = C[A[i]] + 1; //C[i]包含元素值是i的个数
// cout<<"C["<<A[i]<<"]=" <<C[A[i]]<<'';
for(int j = 1; j < k; j++)
C[j] = C[j] + C[j-1];//C[i]包含等于或小于i的元素的个数
for(j = k-1; j >= 0; j--)
{
B[C[A[j]]-1] = A[j];
C[A[j]] = C[A[j]] -1;
}//对于每个A[j], 值C[A[j]]即为A[j]在输出数组中的最终位置,因为共有C[A[j]]
//个元素小于等于A[j].由于各个元素可能不一定是不同的,因此,每当将一个值A[j]放在数组B中,
//都要减小C[A[j]]的值。
}
int main()
{
int A[6]={4,4,5,1,1,1};
int B[MaxN];
memset(B, 0, MaxN);
counting_sort(A, B, 6);
for(int i = 0; i < sizeof(A)/sizeof(A[0]); i++)
cout<<"B["<<i<<"]=" <<B[i]<<'';
return 0;
}
//《算法导论》中:计数排序的思想就是对每一个输入元素x,确定出小于x的元素个数
//但是我觉得计数排序的应用范围太狭小了,对于元素相差较大者,不易使用。
//如果按照元素的比较方法来实现到可以克服这个问题,但是计算排序的效率高就在于不比较元素之间的
//大小来实现。否则,效率一定会降低,而且演化成比较排序。
#include <string>
using namespace std;
const int MaxN = 40;
void counting_sort(int A[],int B[], int k)
{
int C[MaxN];
//for(int i = 0; i < MaxN; i++)
// C[i] =0;//初始化
memset(C, 0, sizeof(C)/sizeof(C[0]));
for(int i = 0; i < k; i++)
C[A[i]] = C[A[i]] + 1; //C[i]包含元素值是i的个数
// cout<<"C["<<A[i]<<"]=" <<C[A[i]]<<'';
for(int j = 1; j < k; j++)
C[j] = C[j] + C[j-1];//C[i]包含等于或小于i的元素的个数
for(j = k-1; j >= 0; j--)
{
B[C[A[j]]-1] = A[j];
C[A[j]] = C[A[j]] -1;
}//对于每个A[j], 值C[A[j]]即为A[j]在输出数组中的最终位置,因为共有C[A[j]]
//个元素小于等于A[j].由于各个元素可能不一定是不同的,因此,每当将一个值A[j]放在数组B中,
//都要减小C[A[j]]的值。
}
int main()
{
int A[6]={4,4,5,1,1,1};
int B[MaxN];
memset(B, 0, MaxN);
counting_sort(A, B, 6);
for(int i = 0; i < sizeof(A)/sizeof(A[0]); i++)
cout<<"B["<<i<<"]=" <<B[i]<<'';
return 0;
}
//《算法导论》中:计数排序的思想就是对每一个输入元素x,确定出小于x的元素个数
//但是我觉得计数排序的应用范围太狭小了,对于元素相差较大者,不易使用。
//如果按照元素的比较方法来实现到可以克服这个问题,但是计算排序的效率高就在于不比较元素之间的
//大小来实现。否则,效率一定会降低,而且演化成比较排序。
- 《算法导论》 上的计数排序
- 算法导论 计数排序
- 【算法导论】计数排序
- 【算法导论】计数排序
- 算法导论 计数排序
- 计数排序----算法导论
- 算法导论 计数排序
- [算法导论]计数排序
- 算法导论P99 计数排序
- 算法导论之计数排序
- 算法导论之计数排序
- 算法导论—计数排序
- 算法导论-8.1计数排序
- 算法导论计数排序实现
- 算法导论:c++计数排序
- 《算法导论》中的计数排序的C++实现
- 算法导论上的快速排序
- 插入排序,合并排序,堆排序,快速排序,计数排序的实现(算法导论)
- 缔造我们的人月神话
- 看看如何在Struts应用中施展AJAX魔法
- vsftp:500 OOPS: could not bind listening IPv4 socket 解决办法
- 初学Apache V2.2+PHP5服务器的若干心得
- Missing Swing Widgets
- 《算法导论》 上的计数排序
- 关于网络投票
- 龙芯软件开发(20)-- 频率和初始化实时时钟
- 了解ASP.NET底层架构
- CaliberRM 2005 R2 SP1升级一波三折(后记)
- 可拍照手机趋势探析,图像传感与处理是否集成?
- Asp.NET(vb.net)常用函数
- 用指向基类对象的指针输出数据
- 嵌入式系统开发要素的选择分析