排序算法:冒泡排序(代码优化)
http://blog.csdn.net/morewindows/article/details/6657829是必看的
例:长度为N的数组
从0开始进行两两左右交换,那么必然可以把最大数放到最右端。
第二次只需要从第1个到N-1个进行同样的操作就可以了。
所以你只需要开两层循环:
外层:仅仅记录下这是第几次操作,每进行一次操作,我们需要遍历的长度都要减1
内层:进行一个遍历,遍历到N-i即可
代码1:
- //冒泡排序1
- void BubbleSort1(int a[], int n)
- {
- int i, j;
- for (i = 0; i < n; i++)
- for (j = 1; j < n - i; j++)
- if (a[j - 1] > a[j])
- Swap(a[j - 1], a[j]);
- }
代码2:
- //冒泡排序2
- void BubbleSort2(int a[], int n)
- {
- int j, k;
- bool flag;
- k = n;
- flag = true;
- while (flag)
- {
- flag = false;
- for (j = 1; j < k; j++)
- if (a[j - 1] > a[j])
- {
- Swap(a[j - 1], a[j]);
- flag = true;
- }
- k--;
- }
- }
假如突然发现某一趟走下来,没有进行两两交换,你懂的。
代码3:
- //冒泡排序3
- void BubbleSort3(int a[], int n)
- {
- int j, k;
- int flag;
- flag = n;
- while (flag > 0)
- {
- k = flag;
- flag = 0;
- for (j = 1; j < k; j++)
- if (a[j - 1] > a[j])
- {
- Swap(a[j - 1], a[j]);
- flag = j;
- }
- }
- }
这里更精确了一点,试着去发现尾巴一截的有序,如果发小了,下次你遍历到尾巴前面一点就可以了。
排序算法:冒泡排序(代码优化)相关推荐
- C语言基础排序算法-冒泡排序
C语言基础排序算法-冒泡排序 什么是冒泡排序? 顾名思义,这种排序方法就像水中的气泡一样,从底逐渐往上冒,一次前进一步.我们来看一个例子,看看到底是怎么冒泡的.假设有一个数组3,2,5,4,1,我们希 ...
- 经典排序算法 - 冒泡排序Bubble sort
经典排序算法 - 冒泡排序Bubble sort 其原理是比较接近的数字22,按照从小到交换大或降序排列, 这样一趟过去后,最大或最小的数字被交换到了最后一位, 然后再从头開始进行两两比較交换,直到倒 ...
- 排序算法——冒泡排序(Bubble Sort)
排序算法--冒泡排序(Bubble Sort) 算法简介(Introduction) Bubble sort is to compare adjacent elements of the list a ...
- python排序算法 ——冒泡排序(附代码)
python排序算法 --冒泡排序 文章目录 python排序算法 --冒泡排序 一.前言 二.算法描述 三.代码实现 总结 一.前言 相关知识来自<python算法设计与分析>.初级排序 ...
- 十大经典排序算法-冒泡排序算法详解
十大经典排序算法 十大经典排序算法-冒泡排序算法详解 十大经典排序算法-选择排序算法详解 十大经典排序算法-插入排序算法详解 十大经典排序算法-希尔排序算法详解 十大经典排序算法-快速排序算法详解 十 ...
- 排序算法---冒泡排序(java版)
冒泡排序 原理 冒泡排序(Bubble Sort)是一种简单的排序算法,它通过依次比较两个相邻的的元素,看两个元素是否满足大小关系要求,如果不满足则交换两个元素.每一次冒泡会让至少一个元素移动到它应该 ...
- 排序算法--冒泡排序的首尾改进
在排序算法中,冒泡排序是一个很经典的算法,最初的冒泡排序一直要运行n-1次,但是其中有些事不必要的操作,例 如,当没有两个数据发生交换时,就可以结束运行. 本文介绍的一种方法是对上述条件的改进,即不仅 ...
- 排序算法 —— 冒泡排序
基本思想 n个元素,从第1个开始,依次比较相邻的两个是否逆序对(大在前,小在后),若逆序就交换两个元素,即第1个和第2个比,若逆序就交换两个元素,接着第2个和第3个比,若逆序就交换两个元素,接着第3个 ...
- 深入浅出的排序算法-冒泡排序
前言 大家好,给大家带来冒泡排序算法,希望你们喜欢 冒泡排序 为什么这个排序要叫冒泡呢?为什么不叫其他名词呢?其实这个取名是根据排序算法的基本思路命名的,见名知意,冒泡排序,就是想泡泡在水里一样,在水 ...
- 排序算法-冒泡排序算法
2019独角兽企业重金招聘Python工程师标准>>> 冒泡排序算法是所有排序算法中最简单.最基础的一种.冒泡排序算法的思路就是交换排序,通过相邻数据的交换来达到排序的目的. 冒泡排 ...
最新文章
- 一档博士40万年薪+70万房补!引进224人!​这所大学2021年公开招聘专任教师公告...
- Linux基金会宣布将为GraphQL成立基金会
- selenium java 验证码_如何使用Selenium WebDriver和Java从图像(验证码)中读取文本
- java 宕机监控_JAVA实现监测tomcat是否宕机及控制重启的方法
- VF01 BAPI :BAPI_BILLINGDOC_CREATEMULTIPLE
- MySQL Explain详解,分析语句为何运行慢
- 【MySQL】数据库死锁查询及处理
- WebBrowser 控件 内存溢出 补丁 From Microsoft
- M - Kill the tree 计蒜客 - 42552(2019icpc徐州/树的重心/树形dp)
- JS 判断是否是手机端并跳转操作
- 2021年KOL市场研究报告
- j计算机专业英语题库,计算机专业英语单词习题
- SSL、OPENSSL、SSH、OPENSSH
- 机器学习九大挑战(转载)
- sql 不同数据库同步数据_什么是SQL数据同步
- WCF服务重构实录(中)
- php完成润年判定程序编写,python闰年判定代码是什么
- blink usb无线网卡驱动 linux,BLINK无线网卡驱动下载
- IEEE邮件曝光,禁止华为员工审稿!
- 什么软件可以测试皮肤色号,肤色测试卡怎么用?肤色测试卡的使用方法
热门文章
- Maccms苹果cmsV10内核二开听书网有声小说在线听书听书模板+源码+火车头采集+后台API自动采集
- sqlserver 2008 r2 误删数据库还原方法
- 书店管理系统(Servlet+MySQL)登录与注册功能篇
- 【分布式系列】分布式事务:TX-LCN分布式事务框架整合实践
- 域名快速备案的攻略,什么是域名快速备案?
- 3天学会C++,只能帮你到这里了
- MYSQL实现排名函数RANK,DENSE_RANK和ROW_NUMBER
- libev学习系列之三:libev编译安装
- 地图服务“新基建”决胜AI,百度地图如何再度领先行业?
- http直接访问含有中文的ulr失败