`
duoerbasilu
  • 浏览: 1482647 次
文章分类
社区版块
存档分类
最新评论

算法导论第八章—计数排序

 
阅读更多

该算法是以空间换取时间的算法,其时间复杂度为O(n),时间复杂度优于所有比较排序。但是占用空间很大,特别当数组中数据不是很紧凑时,占用空间更大

具体代码如下,代码原理见注释:

//计数排序
//算法时间复杂度是O(n)
//该算法是典型的以空间换取时间的算法空间占有O(n*2+k)
//特别当k很大时,该算法占有空间很大
#include<iostream>
using namespace std;
void CountSort(int a[],int length,int b[],int k)
{
	int c[100]={0};
	int i,j;
	//c[i]包含等于i的元素的个数
	for(j=0;j<length;j++)
	{
		c[a[j]]+=1;
	}
	//c[i]包含小于等于i的元素的个数
	for(j=1;j<=k;j++)
	{
		c[j]+=c[j-1];
	}
	//将a[j]放到正确的位置
	for(j=length-1;j>=0;j--)
	{
		b[c[a[j]]]=a[j];
		c[a[j]]-=1;
	}
}
int main()
{
	int a[20],b[21];
	int i;
	for(i=0;i<20;i++)
	{
		a[i]=rand()%50;
		cout<<a[i]<<' ';
	}
	cout<<endl;
	CountSort(a,20,b,50);
	//注意数组b是从下标为1的开始存储数据,因为数组c中元素最小为1
	for(i=1;i<21;i++)
	{
		cout<<b[i]<<' ';
	}
	cout<<endl;
}


分享到:
评论

相关推荐

    算法导论 第二版 (完整版)

    第8章 线性时间排序 第9章 中位数和顺序统计学 第三部分 数据结构 第10章 基本数据结构 第11章 散列表 第12章 二叉查找树 第13章 红黑树 第14章 数据结构的扩张 第四部分 高级设计和分析技术 导论 第15章 动态规划 ...

    算法导论(第2版)参考答案

     第八章 线性时间中的排序(Sorting in Linear Time)  第九章 中值与顺序统计(Medians and Order Statistics)  第三部分(Part III) 数据结构(Data Structures)  第十章 基本的数据结构(Elementary Data ...

    算法导论 第二版

    第8章 线性时间排序 第9章 中位数和顺序统计学 第三部分 数据结构 第10章 基本数据结构 第11章 散列表 第12章 二叉查找树 第13章 红黑树 第14章 数据结构的扩张 第四部分 高级设计和分析技术 导论 第15章 动态规划 ...

    算法导论-麻省理工(中文)

     第八章 线性时间中的排序(Sorting in Linear Time)  第九章 中值与顺序统计(Medians and Order Statistics)  第三部分(Part III) 数据结构(Data Structures)  第十章 基本的数据结构(Elementary Data ...

    算法导论中文版

    第8章 线性时间排序  8.1 排序算法的下界  8.2 计数排序  8.3 基数排序  8.4 桶排序  思考题  本章注记 第9章 中位数和顺序统计量  9.1 最小值和最大值  9.2 期望为线性时间的选择算法  9.3 最坏...

    算法导论(英文版)

    第八章 线性时间中的排序(Sorting in Linear Time) 第九章 中值与顺序统计(Medians and Order Statistics) 第三部分(Part III) 数据结构(Data Structures) 第十章 基本的数据结构(Elementary Data ...

    算法导论(part2)

    ·为了使更多的算法可以更早地在书中出现,第1版中有关数学背景知识的三章内容从第一部分移到了附录中,即现在的第八部分。 ·新增了40多个思考题和超过185个练习题。 ·明确地使用循环不变式来证明算法的正确性。...

    算法导论(第二版 中文高清版)

    第8章 线性时间排序 第9章 中位数和顺序统计学 第三部分 数据结构 第10章 基本数据结构 第11章 散列表 第12章 二叉查找树 第13章 红黑树 第14章 数据结构的扩张 第四部分 高级设计和分析技术 导论 第15章 动态规划 ...

    算法导论(part1)

    ·为了使更多的算法可以更早地在书中出现,第1版中有关数学背景知识的三章内容从第一部分移到了附录中,即现在的第八部分。 ·新增了40多个思考题和超过185个练习题。 ·明确地使用循环不变式来证明算法的正确性。...

    算法导论第三版英文原版

    第八章 线性时间中的排序(Sorting in Linear Time) 第九章 中值与顺序统计(Medians and Order Statistics) 第三部分(Part III) 数据结构(Data Structures) 第十章 基本的数据结构(Elementary Data ...

    MIT_Introduction to Algorithms 算法导论视频字幕

    8 第五课 线性时间的排序法,下限,计数排序法, 基数排序法 阅读: 8 章第 1 到 3 节 收《作业 2》发《作业 3》 9 第六课 序列统计,中位数 阅读:9 章 10 演示课 4 中位数的应用,桶式排序 阅读:8 章第 4 节 ...

    算法导论(原书第二版)

    第八章 线性时间中的排序(Sorting in Linear Time) 第九章 中值与顺序统计(Medians and Order Statistics) 第三部分(Part III) 数据结构(Data Structures) 第十章 基本的数据结构(Elementary Data ...

    算法导论Introduction to Algorithms

    第八章 线性时间中的排序(Sorting in Linear Time) 第九章 中值与顺序统计(Medians and Order Statistics) 第三部分(Part III) 数据结构(Data Structures) 第十章 基本的数据结构(Elementary Data ...

    算法导论Introduction.to.Algorithms,.Second.Edition.part2(英文)

     第八章 线性时间中的排序(Sorting in Linear Time)  第九章 中值与顺序统计(Medians and Order Statistics)  第三部分(Part III) 数据结构(Data Structures)  第十章 基本的数据结构(Elementary Data ...

    算法导论Introduction.to.Algorithms,.Second.Edition.part1(英文版)

     第八章 线性时间中的排序(Sorting in Linear Time)  第九章 中值与顺序统计(Medians and Order Statistics)  第三部分(Part III) 数据结构(Data Structures)  第十章 基本的数据结构(Elementary Data ...

    《C算法》((美国)Robert Sedgewick)清晰版[DJVU] 第一卷

    第8章 归并和归并排序 253 8.1 二路归并 254 练习 255 8.2 抽象就位归并 255 练习 256 8.3 自顶向下归并 257 练习 259 8.4 基本算法的改进 259 练习 261 8.5 自底向上归并排序 261 练习 265 8.6 归并排序的性能特征 ...

    数据挖掘导论 中文完整版

    287 7.6.4 挖掘有趣的非频繁模式的技术 288 7.6.5 基于挖掘负模式的技术 288 7.6.6 基于支持度期望的技术 290 文献注释 292 参考文献 293 习题 295第8章 聚类分析:基本概念和算法 305 8.1 概述 306 8.1.1 什么是...

    《C算法》((美国)Robert Sedgewick)清晰版[DJVU] 第二卷

    第8章 归并和归并排序 253 8.1 二路归并 254 练习 255 8.2 抽象就位归并 255 练习 256 8.3 自顶向下归并 257 练习 259 8.4 基本算法的改进 259 练习 261 8.5 自底向上归并排序 261 练习 265 8.6 归并排序的性能特征 ...

    图像处理基础(第2版).[美]Maria Petrou(带详细书签).pdf

    第1章 导论 1 1.0.1 为什么要处理图像? 1 1.0.2 什么是一幅图像? 1 1.0.3 什么是一幅数字图像? 1 1.0.4 什么是一个光谱带? 1 1.0.5 为什么大多数图像处理算法都参照灰度图像进行,而实际中遇到的都是彩色...

Global site tag (gtag.js) - Google Analytics