冒泡排序
2016-06-14 09:01
281 查看
设数组长度为n,按照从小到大排序
1:从第一个数开始,比较相邻的前后两个数字,如果前面数据大于后面数据,交换两个数据;否则继续比较
2:当从data[0]遍历到data[n-1]后,最大的数字沉在data[n-1]的位置,即数组末尾;
3:n=n-1,重复上面两步,直到n=0。
优化1:设置flag,如果某次没有交换发生,说明排序已经完成;如果交换,设置flag=true
用k表示也要比较的次数,每次经过一次排序,最大的n沉到最后,k--,那么下一次只要比较n之前的数组,n之后的已经有序
优化2:有10个数的数组,如果经过几次排序,后边的6个数字已经有序,那么下次排序,只要从第一个开始到第四个就OK,不需要继续比较后边的6个
1:从第一个数开始,比较相邻的前后两个数字,如果前面数据大于后面数据,交换两个数据;否则继续比较
2:当从data[0]遍历到data[n-1]后,最大的数字沉在data[n-1]的位置,即数组末尾;
3:n=n-1,重复上面两步,直到n=0。
void BubbleSort1(int data[],int length) { for(int i = 0; i < length; i++) { for(int j = 1; j < length-i; j++) { if(data[j-1] > data[j]) { Swap(data[j-1],data[j]); } } } }
优化1:设置flag,如果某次没有交换发生,说明排序已经完成;如果交换,设置flag=true
用k表示也要比较的次数,每次经过一次排序,最大的n沉到最后,k--,那么下一次只要比较n之前的数组,n之后的已经有序
优化2:有10个数的数组,如果经过几次排序,后边的6个数字已经有序,那么下次排序,只要从第一个开始到第四个就OK,不需要继续比较后边的6个
相关文章推荐
- 【Linux C/C++】 第04讲 多进程TCP传输文件
- Linux查看端口命令:netstat -tln
- [李景山php]每天laravel-20160829|McryptEncrypter-3
- Android 检测是否有ROOT权限
- Java基础03——位运算符
- [李景山php]每天laravel-20160829|McryptEncrypter-3
- IOS Dev Intro - Message Category and Protocol
- eclipse svn operation in process 无法同步 更新 提交
- 我是游戏设计师——《游戏设计艺术》
- cordova + ionic 使用中碰到的一些问题
- ListView多条目展示
- 67. Add Binary
- oracle-同义词,又学到东西了
- QtQuick学习笔记之QML自定义信号
- 大公司都有哪些开源项目~~~阿里,百度,腾讯,360,新浪,网易,小米等
- List<String>转换为实体类的属性【转】
- CentOS x64上Matlab R2015b的镜像安装方法与卸载
- [ solr入门 ] - 利用solrJ进行检索
- Chrome浏览器快捷键大全
- <<Effective C++>>读书笔记8: 定制new和delete