- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c语言排序算法论文
算法论文
题目名称:《c语言常用排序算法分析》
系部名称:计算机科学与工程
班 级:
学 号:
学生姓名:
指导教师:
2014年4月
c语言常用排序算法分析
摘 要
关键词:
关键词关键词关键词
正文
一、冒泡法:
这是最原始,也是众所周知的最慢的算法了。他的名字的由来因为它的工作看来象是冒泡
#include stdio.h
void BubbleSort(int* pData,int Count)//排序的函数
{
int iTemp;
for(int i=1;iCount;i++)//外层循环,把每个数都循环一遍
{
for(int j=Count-1;j=i;j--)//内层循环,每个数都和其他数逐渐比较,然后交换
{
if(pData[j]pData[j-1])
{
iTemp = pData[j-1];
pData[j-1] = pData[j];
pData[j] = iTemp;
}
}
}
}
int main()
{
int data[] = {8,7,1,6,9,4,5,2,3,};
BubbleSort(data,9);
for (int i=0;i9;i++)
{
printf(%d,data[i]);
printf(\n);
}
return 0;
}
倒序(最糟情况)
第一轮: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,9,10(交换1次)
循环次数:6次
交换次数:3次
上面我们给出了程序段,现在我们分析它:这里,影响我们算法性能的主要部分是循环和交换,显然,次数越多,性能就越差。从上面的程序我们可以看出循环的次数是固定的,为1 2 ... 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=K*g(n)。所以f(n)=O(g(n))=O(n*n)。所以我们程序循环的复杂度为O(n*n)。
再看交换。从程序后面所跟的表可以看到,两种情况的循环相同,交换不同。其实交换本身同数据源的有序程度有极大的关系,当数据处于倒序的情况时,交换次数同循环一样(每次循环判断都会交换),复杂度为O(n*n)。当数据为正序,将不会有交换。复杂度为O(0)。乱序时处于中间状态。正是由于这样的原因,我们通常都是通过循环次数来对比算法。
交换法的程序最清晰简单,每次用当前的元素一一的同其后的元素比较并交换。
#include stdio.h
void ExchangeSort(int* pData,int Count)//交换使用的函数
{
int iTemp;
for(int i=0;iCount-1;i++)//从第一到倒数第二个数的循环
{
for(int j=i+1;jCount;j++)从当前数开始,依次往后,遇到逼当前数小的数,就把他们交换
{
if(pData[j]pData[i])
{
iTemp = pData[i];
pData[i] = pData[j];
pData[j] = iTemp;
}
}
}
}
void main()
{
int data[] = {10,9,8,7,6,5,4};
ExchangeSort(data,7);
for (int i=0;i7;i++)
printf(%d
您可能关注的文档
- 32万吨年苯乙烯装置.doc
- 32t卡车梯形转向机构运动学仿真及设计.doc
- 333省道仪征段改(扩)建工程箱涵工程开工报告.doc
- 33m斗容量轮式装载机液压系统(溢流阀)设计开题报告.doc
- 33_调查保定市第三产业的发展调研申请书.doc
- 330KV变电站设计本科开题报告.doc
- 34_大学生支教对当地农村的作用与影响调研申请书.doc
- 3500吨级油轮主要结构规范计算书.doc
- 350MW等级超临界机组锅炉脱硝标书.doc
- 3414田间试验数据分析.ppt
- 2025年南京市市场监督管理局所属事业单位招聘编外笔试高频难、易错点备考题库及完整答案详解1套.docx
- 2025年南通如东县融媒体中心招聘紧缺型专业人才笔试备考题库及答案详解1套.docx
- 2025年南京市鼓楼区文化和旅游局所属事业单位招聘2人笔试备考题库及答案详解1套.docx
- 2025年四川成都市司法局所属事业单位招聘中学教师27人笔试备考题库参考答案详解.docx
- 2025年南充市公安局第一次招聘27名交通辅警的笔试高频难、易错点备考题库及参考答案详解一套.docx
- 2025年四川省医学科学院·四川省人民医院招聘58人(第二次)笔试高频难、易错点备考题库及参考答案详.docx
- 2025年四川巴中市公安局恩阳区分局招聘警务辅助人员20人笔试备考题库含答案详解.docx
- 2025吉林农业大学招生专业目录.doc
- 2025级《建筑施工技术》复习提纲资料.doc
- 2025年教师招聘试题答案.doc
最近下载
- GB50863-2013 尾矿设施设计规范.docx VIP
- 2025年陕西省二级造价工程师职业资格考试《基础知识》真题及答案.docx VIP
- 人教版PEP三年级英语下册全册同步练习随堂练习一课一练版(有答案).pdf VIP
- 彩钢管理房单元工程施工质量评定表(1).doc VIP
- 江西婺源篁岭民俗文化村发展规划--规划说明.pdf
- IATF16949-2016事态升级控制规范.doc VIP
- 新收入准则对电商企业运营的影响及应对策略.docx VIP
- 东莞市地图含区县可编辑可填充动画演示矢量分层地图PPT模板.pptx VIP
- XX县2022年度自然资源统一确权登记项目技术设计书模版.docx VIP
- 女儿墙维修工程施工方案(3篇).docx VIP
文档评论(0)