排序之冒泡排序(Bubble Sort)
2013-12-07 20:53
686 查看
冒泡排序思想(Bubble Sort):
设数组长度为N。
1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。
2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。
3.N=N-1,如果N不为0就重复前面二步,否则排序完成。
代码实现:
设数组长度为N。
1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。
2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。
3.N=N-1,如果N不为0就重复前面二步,否则排序完成。
代码实现:
#include<iostream> using namespace std; //-------------------------------------------------------冒泡排序 -------------------------------------------------------------------------- void BubbleSort1(int* data , int dLength) { //每循环一次,待排序列中最大元素沉底 for(int i = 0; i < dLength - 1; i++) { for(int j = 0; j < dLength - i - 1; j++) { if(data[j] > data[j + 1]) swap(data[j] , data[j + 1]); } } } void BubbleSort2(int* data , int dLength) { //每循环一次,排序序列中的最小值冒出; for(int i = 0; i < dLength - 1; i++) { for(int j = dLength - 1; j > i; j--) { if(data[j - 1] > data[j]) swap(data[j -1] , data[j]); } } } //改进一 void BubbleSort3(int* data , int dLength) { int low = 0; int high = dLength - 1; while(low < high) { for(int j = low; j < high; j++) { if(data[j] > data[j+1]) swap(data[j] , data[j + 1]); } high--; for(int i = high; i > low; i--) { if(data[i - 1] > data[i]) swap(data[i] , data[i-1]); } low++; } } //改进二 void BubbleSort4(int* data , int dLength) { bool exchange = true; for(int i = 0; i < dLength - 1 && exchange; i++) { exchange = false; for(int j = dLength - 1; j > i; j--) { if(data[j - 1] > data[j]) { swap(data[j -1] , data[j]); exchange = true; //若交换,则exchange = true; } //若没有进行交换,exchange = false;不用再进行比较了; } } }
相关文章推荐
- 第3章 文法和语言(二)
- SLP 系列第 1 部分:基本介绍和对比分析
- linux 文件夹同步工具
- 效率加班长效性
- 使用SharePoint 2010 母版页
- linux下发各种协议包及其详细分析
- 使用SharePoint 2010 母版页
- Python WindowsError
- GitHub 配置
- 一陰一陽의 相配
- 小白的Github使用记录
- 天使没有了翅膀会怎样?
- 查询(c语言实现)
- Hive数据倾斜总结
- 易簡의 理
- SharePoint 2010 母版页制作的简单介绍
- mysql 无法远程访问(授权也没办法,确切的说是因为只绑定了127IP)
- ./slapd: error while loading shared libraries: libdb-4.7.so: cannot open shared object file: No such file or directory
- SharePoint 2010 母版页制作的简单介绍
- linux快捷键大全