博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
冒泡排序
阅读量:5807 次
发布时间:2019-06-18

本文共 943 字,大约阅读时间需要 3 分钟。

冒泡排序是从我学C数组的时候最大的头疼点,那时候for的二层循环的概念没有那么成熟。现在对冒泡排序没有那么恐惧了,多练,多用,没啥好怕的。

我们当然可以一口气将这四个数字从小到大来排序,但计算机需要一个一个的去比。那么怎么比呢?就需要用到排序算法了,排序的算法很多,这次的文章主要介绍冒泡排序。

冒泡排序简介:顾名思义,‘冒泡’,在水中的泡泡,轻的飘上去,重的沉在水里。

拿9 5 7 1 这四个数字作为例子

第一轮:

  1. 9 5 7 1

  2. 5 9 7 1

  3. 5 7 9 1

  4. 5 7 1 9

    第一轮比较下来,发现最大的数字跑到了最后面。在程序中可以用一个for循环来遍历这四个数字如果前一个比后一个大,则对其进行交换。

第二轮:

  1. 5 7 1 9

  2. 5 1 7 9 (其实到这里可以不用比了)

  3. 5 1 7 9

  4. 5 1 7 9

    第二轮将7放到了9的前面。同样的道理,前后比较大的放后面。

第三轮

  1. 5 1 7 9

  2. 1 5 7 9 (应停止比较)

  3. 1 5 7 9

  4. 1 5 7 9

    第三轮将5放在了7的前面

虽然有四个数字,但只需遍历三次,因为其他三个数字确定放正确了,最后一个数字自然也就正确了。

#define N 4int array[N] = { 9,5,7,1};for (int i = 0; i < N-1; i++){    for (int j = 0; j < N-1-i; j++)    {        if (array[j] > array[j + 1])        {            int temp = array[j];            array[j] = array[j + 1 ];            array[j + 1] = temp;        }    }}for (int i = 0; i < N; i++){    printf("%d\n", array[i]);}

关键点在于外层循环的N-1,上文已经解释是因为其他的位置已经确定最后一个数字不需要管。

内层循环,首先N-1,是因为不用与自己比,N-1-i ,这里又减了一个i,原因是外层每循环一次就能确定一个数字,所以每次减去一次外层。再对其进行大小比较,交换数据。

转载地址:http://frubx.baihongyu.com/

你可能感兴趣的文章
2019届高二(下)半期考试题(文科)
查看>>
【REDO】删除REDO LOG重做日志组后需要手工删除对应的日志文件(转)
查看>>
nginx 301跳转到带www域名方法rewrite(转)
查看>>
AIX 配置vncserver
查看>>
windows下Python 3.x图形图像处理库PIL的安装
查看>>
【IL】IL生成exe的方法
查看>>
network
查看>>
SettingsNotePad++
查看>>
centos7安装cacti-1.0
查看>>
3个概念,入门 Vue 组件开发
查看>>
没有JS的前端:体积更小、速度更快!
查看>>
数据指标/表现度量系统(Performance Measurement System)综述
查看>>
GitHub宣布推出Electron 1.0和Devtron,并将提供无限制的私有代码库
查看>>
Angular2, NativeScript 和 React Native比较[翻译]
查看>>
论模式在领域驱动设计中的重要性
查看>>
国内首例:飞步无人卡车携手中国邮政、德邦投入日常运营
查看>>
微软将停止对 IE 8、9和10的支持
查看>>
微服务架构会和分布式单体架构高度重合吗
查看>>
如何测试ASP.NET Core Web API
查看>>
《The Age of Surge》作者访谈
查看>>