http://blog.csdn.net/morewindows/article/details/6657829是必看的

例:长度为N的数组

从0开始进行两两左右交换,那么必然可以把最大数放到最右端。

第二次只需要从第1个到N-1个进行同样的操作就可以了。

所以你只需要开两层循环:

外层:仅仅记录下这是第几次操作,每进行一次操作,我们需要遍历的长度都要减1

内层:进行一个遍历,遍历到N-i即可

代码1:

  1. //冒泡排序1
  2. void BubbleSort1(int a[], int n)
  3. {
  4. int i, j;
  5. for (i = 0; i < n; i++)
  6. for (j = 1; j < n - i; j++)
  7. if (a[j - 1] > a[j])
  8. Swap(a[j - 1], a[j]);
  9. }

代码2:

  1. //冒泡排序2
  2. void BubbleSort2(int a[], int n)
  3. {
  4. int j, k;
  5. bool flag;
  6. k = n;
  7. flag = true;
  8. while (flag)
  9. {
  10. flag = false;
  11. for (j = 1; j < k; j++)
  12. if (a[j - 1] > a[j])
  13. {
  14. Swap(a[j - 1], a[j]);
  15. flag = true;
  16. }
  17. k--;
  18. }
  19. }

假如突然发现某一趟走下来,没有进行两两交换,你懂的。

代码3:

  1. //冒泡排序3
  2. void BubbleSort3(int a[], int n)
  3. {
  4. int j, k;
  5. int flag;
  6. flag = n;
  7. while (flag > 0)
  8. {
  9. k = flag;
  10. flag = 0;
  11. for (j = 1; j < k; j++)
  12. if (a[j - 1] > a[j])
  13. {
  14. Swap(a[j - 1], a[j]);
  15. flag = j;
  16. }
  17. }
  18. }

这里更精确了一点,试着去发现尾巴一截的有序,如果发小了,下次你遍历到尾巴前面一点就可以了。

排序算法:冒泡排序(代码优化)相关推荐

  1. C语言基础排序算法-冒泡排序

    C语言基础排序算法-冒泡排序 什么是冒泡排序? 顾名思义,这种排序方法就像水中的气泡一样,从底逐渐往上冒,一次前进一步.我们来看一个例子,看看到底是怎么冒泡的.假设有一个数组3,2,5,4,1,我们希 ...

  2. 经典排序算法 - 冒泡排序Bubble sort

    经典排序算法 - 冒泡排序Bubble sort 其原理是比较接近的数字22,按照从小到交换大或降序排列, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头開始进行两两比較交换,直到倒 ...

  3. 排序算法——冒泡排序(Bubble Sort)

    排序算法--冒泡排序(Bubble Sort) 算法简介(Introduction) Bubble sort is to compare adjacent elements of the list a ...

  4. python排序算法 ——冒泡排序(附代码)

    python排序算法 --冒泡排序 文章目录 python排序算法 --冒泡排序 一.前言 二.算法描述 三.代码实现 总结 一.前言 相关知识来自<python算法设计与分析>.初级排序 ...

  5. 十大经典排序算法-冒泡排序算法详解

    十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...

  6. 排序算法---冒泡排序(java版)

    冒泡排序 原理 冒泡排序(Bubble Sort)是一种简单的排序算法,它通过依次比较两个相邻的的元素,看两个元素是否满足大小关系要求,如果不满足则交换两个元素.每一次冒泡会让至少一个元素移动到它应该 ...

  7. 排序算法--冒泡排序的首尾改进

    在排序算法中,冒泡排序是一个很经典的算法,最初的冒泡排序一直要运行n-1次,但是其中有些事不必要的操作,例 如,当没有两个数据发生交换时,就可以结束运行. 本文介绍的一种方法是对上述条件的改进,即不仅 ...

  8. 排序算法 —— 冒泡排序

    基本思想 n个元素,从第1个开始,依次比较相邻的两个是否逆序对(大在前,小在后),若逆序就交换两个元素,即第1个和第2个比,若逆序就交换两个元素,接着第2个和第3个比,若逆序就交换两个元素,接着第3个 ...

  9. 深入浅出的排序算法-冒泡排序

    前言 大家好,给大家带来冒泡排序算法,希望你们喜欢 冒泡排序 为什么这个排序要叫冒泡呢?为什么不叫其他名词呢?其实这个取名是根据排序算法的基本思路命名的,见名知意,冒泡排序,就是想泡泡在水里一样,在水 ...

  10. 排序算法-冒泡排序算法

    2019独角兽企业重金招聘Python工程师标准>>> 冒泡排序算法是所有排序算法中最简单.最基础的一种.冒泡排序算法的思路就是交换排序,通过相邻数据的交换来达到排序的目的. 冒泡排 ...

最新文章

  1. 一档博士40万年薪+70万房补!引进224人!​这所大学2021年公开招聘专任教师公告...
  2. Linux基金会宣布将为GraphQL成立基金会
  3. selenium java 验证码_如何使用Selenium WebDriver和Java从图像(验证码)中读取文本
  4. java 宕机监控_JAVA实现监测tomcat是否宕机及控制重启的方法
  5. VF01 BAPI :BAPI_BILLINGDOC_CREATEMULTIPLE
  6. MySQL Explain详解,分析语句为何运行慢
  7. 【MySQL】数据库死锁查询及处理
  8. WebBrowser 控件 内存溢出 补丁 From Microsoft
  9. M - Kill the tree 计蒜客 - 42552(2019icpc徐州/树的重心/树形dp)
  10. JS 判断是否是手机端并跳转操作
  11. 2021年KOL市场研究报告
  12. j计算机专业英语题库,计算机专业英语单词习题
  13. SSL、OPENSSL、SSH、OPENSSH
  14. 机器学习九大挑战(转载)
  15. sql 不同数据库同步数据_什么是SQL数据同步
  16. WCF服务重构实录(中)
  17. php完成润年判定程序编写,python闰年判定代码是什么
  18. blink usb无线网卡驱动 linux,BLINK无线网卡驱动下载
  19. IEEE邮件曝光,禁止华为员工审稿!
  20. 什么软件可以测试皮肤色号,肤色测试卡怎么用?肤色测试卡的使用方法

热门文章

  1. Maccms苹果cmsV10内核二开听书网有声小说在线听书听书模板+源码+火车头采集+后台API自动采集
  2. sqlserver 2008 r2 误删数据库还原方法
  3. 书店管理系统(Servlet+MySQL)登录与注册功能篇
  4. 【分布式系列】分布式事务:TX-LCN分布式事务框架整合实践
  5. 域名快速备案的攻略,什么是域名快速备案?
  6. 3天学会C++,只能帮你到这里了
  7. MYSQL实现排名函数RANK,DENSE_RANK和ROW_NUMBER
  8. libev学习系列之三:libev编译安装
  9. 地图服务“新基建”决胜AI,百度地图如何再度领先行业?
  10. http直接访问含有中文的ulr失败