当前位置:首页 » 《资源分享》 » 正文

【C语言】冒泡排序保姆级教学

18 人参与  2024年09月10日 08:42  分类 : 《资源分享》  评论

点击全文阅读


C语言冒泡排序保姆级教学

动态图解:
在这里插入图片描述

拿排升序举例子
第一步:
将想要排序的数组中数值最大的那个数排到该数组的最后
具体实现如下图:
在这里插入图片描述
第一步代码实现

for (int i = 1; i < n ; i++)//n为数组大小此处为4{if (a[i - 1] > a[i])//注意越界,若排降序将大于改为小于即可{int tmp = a[i - 1];a[i - 1] = a[i];a[i] = tmp;}}

第二步(关键)
由于通过第一步我们已经将最大的数排在了数组最后
因此只需要将数组中第二大的数排到数组的倒数第二个位置
所以这里我们就采用双重循环来控制要排序的区间
这里就是我们要排序的区间从原来的a[0]到a[3]缩小到a[0]到a[2],
即每次将排序区间中最大的数排到该区间最后后,将该排序区间缩小1;
代码如下:

for (int j = 0; j < n - 1; j++)//此处条件为j < n - 1 可以根据第二个for循环得到,当n为1时依旧要进入第二个for//循环对a[0]与a[1]比较,所以第二个for循环条件n - j 最小应该为2,那么j最大就应该为 n - 2;{for (int i = 1; i < n - j; i++)//注意此处条件变为i < n - j,来达到每次排序完后区间缩小1的目的{if (a[i - 1] > a[i])//注意越界{int tmp = a[i - 1];a[i - 1] = a[i];a[i] = tmp;}}

冒泡排序的优化

这个双重循环已经可以解决排序问题了,但是可以对它进行优化,使得我们的代码更加健壮(运行时间更短),优化代码如下:

void BubbleSort(int* a, int n)//BubbleSort中文为冒泡排序的意思{for (int j = 0; j < n - 1; j++){int exchange = 0;//在此定义一个变量来判断当前数组是否已经排好序了for (int i = 1; i < n - j; i++){if (a[i - 1] > a[i])//注意越界{int tmp = a[i - 1];a[i - 1] = a[i];a[i] = tmp;exchange = 1;}}//如果已经排好序就不会再进入第二个for循环,变量的值就不会为1,直接退出循环if (exchange == 0){break;}}}

数组元素和大小大家可以自行修改
OK呀家人们,现在直接上全代码一观:

#include<stdio.h>void BubbleSort(int* a, int n){for (int j = 0; j < n - 1; j++){int exchange = 0;for (int i = 1; i < n - j; i++){if (a[i - 1] > a[i])//注意越界{int tmp = a[i - 1];a[i - 1] = a[i];a[i] = tmp;exchange = 1;}}if (exchange == 0){break;}}}int main(){int a[4] = { 4,2,3,1 };BubbleSort(a, 4);for (int i = 0; i < 4; i++){printf("%d ", a[i]);}return 0;}

运行结果:
在这里插入图片描述
如果有帮助到您,给俺个赞呗,制作不易,点赞收藏方便以后浏览。


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/157601.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 苏妤熙贺学州是什么小说(贺学州苏妤熙)(苏妤熙贺学州)全本完整清爽版在线+无广告结局
  • 高考结束首富爸爸要与我断亲,我选择接受(王阳沈傲天沈明)全书浏览_高考结束首富爸爸要与我断亲,我选择接受全书浏览
  • 重生高考填报志愿时,我放任全班上大专(颜禾晚宋津年叶淼淼)_重生高考填报志愿时,我放任全班上大专(颜禾晚宋津年叶淼淼)
  • 开局从魔兽进化听书_夜天无广告阅读_小说后续在线阅读_无删减免费完结_
  • 沈南舟的高考前,千金校花把全班送进ICU精彩节选江染沈南舟全书在线
  • 挖我仙骨送女主?我反抢女主系统小说(楚鱼)小说全集阅读连载中(挖我仙骨送女主?我反抢女主系统)_笔趣阁
  • 完结文重生后我放弃才子,嫁给了傻子列表_完结文重生后我放弃才子,嫁给了傻子(萧云瑾云清柔)
  • 从此山河皆过客(苏雾眠沈砚舟)_从此山河皆过客
  • 重生后,我笑送全班去三亚毕业旅行前言+后续+结局(徐凯)
  • 春知晓梦不觉精心打造(阮清歌薄时谦)_春知晓梦不觉精心打造(阮清歌薄时谦)
  • 我怀孕后,患者要求我打掉孩子帮她后续结局_许燕徐燕高分神作_小说后续在线阅读_无删减免费完结_
  • 全书浏览重生后联姻丈夫爱上KTV小妹,我死遁了(姜满裴聿琛温舒柠)_重生后联姻丈夫爱上KTV小妹,我死遁了(姜满裴聿琛温舒柠)全书结局

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1