第十三章 C语言常用算法.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十三章 C语言常用算法讲解算法是一个宽泛的概念,可以认为是实现某个功能的的思路或方案。如果你希望深入学习编程,那么必须要了解基本的算法。本节给大家介绍几种排序算法和查找算法。C语言选择排序算法及代码选择排序是排序算法的一种,这里以从小到大排序为例进行讲解。 基本思想及举例说明选择排序(从小到大)的基本思想是,首先,选出最小的数,放在第一个位置;然后,选出第二小的数,放在第二个位置;以此类推,直到所有的数从小到大排序。在实现上,我们通常是先确定第i小的数所在的位置,然后,将其与第i个数进行交换。下面,以对 3? 2? 4? 1 进行选择排序说明排序过程,使用min_index 记录当前最小的数所在的位置。第1轮 排序过程 (寻找第1小的数所在的位置)3? 2? 4? 1(最初, min_index=1)3? 2? 4? 1(3 2, 所以min_index=2)3? 2? 4? 1(2 4, 所以 min_index=2)3? 2? 4? 1(2 1, 所以 min_index=4, 这时候确定了第1小的数在位置4)1 ?2? 4? 3 (第1轮结果,将3和1交换,也就是位置1和位置4交换)第2轮 排序过程 (寻找第2小的数所在的位置)1? 2? 4? 3(第1轮结果, min_index=2,只需要从位置2开始寻找)1? 2? 4? 3(4 2, 所以min_index=2)1? 2? 4? 3(3 2, 所以 min_index=2)1 ?2? 4? 3(第2轮结果,因为min_index位置刚好在第2个位置,无需交换)第3轮 排序过程 (寻找第3小的数所在的位置)1? 2? 4? 3(第2轮结果, min_index=3,只需要从位置2开始寻找)1? 2? 4? 3(4 3, 所以min_index=4)1? 2? 3? 4(第3轮结果,将3和4交换,也就是位置4和位置3交换)至此,排序完毕。 总结及实现选择排序对大小为N的无序数组R[N]进行排序,进行N-1轮选择过程。第i轮选取第i小的数,并将其放在第i个位置上。当第N-1次完成时,第N小(也就是最大)的数自然在最后的位置上。下面给出选择排序的C语言实现。 复制纯文本新窗口#includestdio.h#includestdlib.h?#define N 8?void select_sort(int a[],int n);??//选择排序实现void select_sort(int a[],int n)//n为数组a的元素个数{ //进行N-1轮选择 for(int i=0; in-1; i++) {? int min_index = i; //找出第i小的数所在的位置 for(int j=i+1; jn; j++) { if(a[j] a[min_index]) { min_index = j; } }? //将第i小的数,放在第i个位置;如果刚好,就不用交换 if( i != min_index) { int temp = a[i]; a[i] = a[min_index]; a[min_index] = temp; } }}??int main(){ int num[N] = {89, 38, 11, 78, 96, 44, 19, 25};? select_sort(num, N);? for(int i=0; iN; i++) printf(%d , num[i]);? printf(\n);?? system(pause); return 0;?}注意:选择排序是一种不稳定的排序算法,可能会打乱两个相同数字的原有顺序。例如,序列 5 ?8 ?5 ?2 ?9, 按照从小到大排序,第一轮会将第1个数字5会和2交换,那么原序列中2个5的相对前后顺序就被破坏了,所以选择排序是一种不稳定的排序算法。C语言冒泡排序算法及代码冒泡排序是排序算法的一种,思路清晰,代码简洁,常被用在大学生计算机课程中。“冒泡”这个名字的由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。这里以从小到大排序为例进行讲解。 基本思想及举例说明冒泡排序的基本思想就是不断比较相邻的两个数,让较大的元素不断地往后移。经过一轮比较,就选出最大的数;经过第2轮比较,就选出次大的数,以此类推。下面以对 3? 2? 4? 1

文档评论(0)

zhuliyan1314 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档