2种冒泡排序优化
来源:互联网 发布:办公oa软件下载 编辑:程序博客网 时间:2024/06/07 21:02
直接上代码:
#define swap(a,b) {a ^= b; b ^= a; a ^= b;}
void sort(int *arr, int num){
for(int i = 0; i < num - 1; ++i){
bool isOk = true; // 是否排序完成
for(int j = 0; j < num - 1 - i; ++j){
if(arr[j] > arr[j + 1]){
isOk = false;
swap(arr[j], arr[j + 1]);
}
if(isOk){
return;
}
}
}
void test(){
int arr[5] = {0,2,1,4,5};
sort(arr, 5);
}
思路:冒泡排序,假设排序都已经排完了,就直接退出。避免多余排序(不发生交换的时候就排序完成了);
每一轮排序完成之后,最大的数字就已经在最后了,就可以不比较最后一个数字;
另一种冒泡排序的写法:
void sort(int *arr, int num){
bool flag = true;
while(flag){
flag = false;
for (int j = 0; j < num - 1; ++j){
if(arr[j] > arr[j + 1]){
swap(arr[j], arr[j + 1]);
flag = true;
}
}
}
}
思路:与上一种思路一样,不发生交换了就排序完成了。
0 0
- 2种冒泡排序优化
- 冒泡排序及2种优化方法
- 冒泡排序三种优化
- 冒泡排序及两种优化方式
- 冒泡排序算法的两种优化
- 冒泡排序算法及其两种优化
- 冒泡排序的三种优化
- 冒泡排序优化法
- 优化冒泡排序算法
- Java优化冒泡排序
- 冒泡排序 优化
- 冒泡排序优化
- 冒泡排序及其优化
- 冒泡排序及其优化
- 冒泡排序和优化
- 优化冒泡排序
- 冒泡排序的优化
- 冒泡排序及优化
- Hangover(1.4.1)
- QTcreator找不到库
- VxWorks工程Makefile分析
- JQuery中serialize()、serializeArray()和param()方法
- UVa OJ 10361 自动作诗机
- 2种冒泡排序优化
- Bootstrap之表格
- VB.NET连接Office Access数据库显示列表数据
- QtCreator 为应用程序设置图标
- ARC开启的情况下是否需要对GCD对象dispatch_release ?
- I - The 3n + 1 problem(2.4.2)
- mongodb 备份 还原 导出 导入
- HDU 1421 搬寝室——动态规划
- MySQL常用SQL语句