c语言排序算法论文.doc

c语言排序算法论文.doc

ID:61005240

大小:34.00 KB

页数:9页

时间:2021-01-19

c语言排序算法论文.doc_第1页
c语言排序算法论文.doc_第2页
c语言排序算法论文.doc_第3页
c语言排序算法论文.doc_第4页
c语言排序算法论文.doc_第5页
资源描述:

《c语言排序算法论文.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、算法论文题目名称:《c语言常用排序算法分析》系部名称:计算机科学与工程班级:学号:学生姓名:指导教师:2014年4月c语言常用排序算法分析摘要经过一个学期的算法学习,我对算法产生了浓厚的兴趣,于是就在网上看了下几种经典的算法,对其中的排序算法产生了浓厚的兴趣,下面我就给大家分析一下这些经典的排序算法。关键词:关键词1:排序;关键词2:算法;关键词3:循环。正文一、冒泡法:这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡,就是把要调换的数字逐渐像冒泡一样浮上来。代码如下:#includevoidBubbleSort(in

2、t*pData,intCount)//排序的函数{intiTemp;for(inti=1;i=i;j--)//内层循环,每个数都和其他数逐渐比较,然后交换{if(pData[j]

3、rintf("%d",data[i]);printf("");}return0;}倒序(最糟情况)第一轮:10,9,8,7->10,9,7,8->10,7,9,8->7,10,9,8(交换3次)第二轮:7,10,9,8->7,10,8,9->7,8,10,9(交换2次)第一轮:7,8,10,9->7,8,9,10(交换1次)循环次数:6次交换次数:6次其他:第一轮:8,10,7,9->8,10,7,9->8,7,10,9->7,8,10,9(交换2次)第二轮:7,8,10,9->7,8,10,9->7,8,10,9(交换0次)第一轮:7,8,10,9->7,8,

4、9,10(交换1次)循环次数:6次交换次数:3次上面我们给出了程序段,现在我们分析它:这里,影响我们算法性能的主要部分是循环和交换,显然,次数越多,性能就越差。从上面的程序我们可以看出循环的次数是固定的,为12...n-1。写成公式就是1/2*(n-1)*n。现在注意,我们给出O方法的定义:若存在一常量K和起点n0,使当n>=n0时,有f(n)<=K*g(n),则f(n)=O(g(n))。(呵呵,不要说没学好数学呀,对于编程数学是非常重要的!!!)现在我们来看1/2*(n-1)*n,当K=1/2,n0=1,g(n)=n*n时,1/2*(n-1)*n<=1/2*n*n

5、=K*g(n)。所以f(n)=O(g(n))=O(n*n)。所以我们程序循环的复杂度为O(n*n)。再看交换。从程序后面所跟的表可以看到,两种情况的循环相同,交换不同。其实交换本身同数据源的有序程度有极大的关系,当数据处于倒序的情况时,交换次数同循环一样(每次循环判断都会交换),复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(0)。乱序时处于中间状态。正是由于这样的原因,我们通常都是通过循环次数来对比算法。二、交换法交换法的程序最清晰简单,每次用当前的元素一一的同其后的元素比较并交换。代码如下:#includevoidExchange

6、Sort(int*pData,intCount)//交换使用的函数{intiTemp;for(inti=0;i

7、7;i++)printf("%d",data[i]);printf("");}倒序(最糟情况)第一轮:10,9,8,7->9,10,8,7->8,10,9,7->7,10,9,8(交换3次)第二轮:7,10,9,8->7,9,10,8->7,8,10,9(交换2次)第一轮:7,8,10,9->7,8,9,10(交换1次)循环次数:6次交换次数:6次其他:第一轮:8,10,7,9->8,10,7,9->7,10,8,9->7,10,8,9(交换1次)第二轮:7,10,8,9->7,8,10,9->7,8,10,9(交换1次)第一轮:7,8,10,9->7,8,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。