白话经典算法系列之一 冒泡排序的三种实现(转)
来源:互联网 发布:淘宝图片空间怎么清空 编辑:程序博客网 时间:2024/05/21 14:04
#include<iostream>using namespace std;//交换两个数,这里用到了引用void Swap(int &a, int &b){ int temp; temp = a; a = b; b = temp; return ;}void BubbleSort1(int a[], int len){ int i,j; for (i =0 ; i < len; i++) { for(j = 1; j < len - i; j++) // 这层的循环,注意 len - i { if (a[j-1] > a[j]) { Swap(a[ j-1], a[j]); } } } return ;}/* 优化这个版本 * 设置一个标志flag, 如果这一趟(某一轮循环)发生了交换,设置为true;如果有一趟(一轮)没有发生交换 * 说明排序已经排好,设置为false*/void BubbleSort2(int a[], int len){ int i, j, k; bool flag; k = len; //控制外层循环 flag = true; //初始时,需要排序 while(flag) { flag = false; //设置flag 不需要排序,如果循环里面把flag置成true了,说明需要操作 for (j =1 ; j < k; j++) { if (a[j - 1] > a[j]) { Swap(a[ j-1], a[j]); //交换数值 flag = true; //需要排序操作 } } k--; } return ;}/*如果有10个数的数组,仅前面5个数无序,后面5个已经排序好了且都大于前面的5个数 * 在第一趟遍历之后,后面发生的交换的位置必定小于5,且这个位置之后的数据必定已经排好序了 *记录下这个位置,第二次只要从数组头部遍历到这个位置就行*/void BubbleSort3(int a[], int len){ int i, j, k; int flag; flag = len; //控制外层循环 while(flag >0) { k = flag ; flag = 0; for (j =1 ; j < k; j++) //第一轮循环结束了之后,知道flag后面的数已经拍好了 { if (a[j - 1] > a[j]) { Swap(a[ j-1], a[j]); //交换数值 flag = j; //需要排序操作 } } } return ;}int main(){ int i; int N =10; //数组个数 int s[10] = {72,6,57,88,60,42,83,73,48,85}; //初始化 //int s[10] = {48,6,57,60,42,72,73,83,85,88}; //初始化 for(i = 0; i < 9; i++) cout<< s[i] <<" "; cout<<endl; //quick_sort(s, 0, 10-1); //快速排序 //BubbleSort1(s,N); //BubbleSort2(s,N); BubbleSort3(s,N); //输出排序后的数组 for(i = 0; i < 9; i++) cout<< s[i] <<" "; return 0;}
0 0
- 白话经典算法系列之一 冒泡排序的三种实现(转)
- 白话经典算法系列之一 冒泡排序的三种实现
- 白话经典算法系列之一 冒泡排序的三种实现
- 白话经典算法系列之一 冒泡排序的三种实现
- 白话经典算法系列之一 冒泡排序的三种实现
- 白话经典算法系列之一 冒泡排序的三种实现 .
- 白话经典算法系列之一 冒泡排序的三种实现
- 白话经典算法系列之一 冒泡排序的三种实现
- 白话经典算法系列之一 冒泡排序的三种实现 .
- 白话经典算法系列之一 冒泡排序的三种实现
- 白话经典算法系列之一 冒泡排序的三种实现
- 白话经典算法系列之一 冒泡排序的三种实现
- 白话经典算法系列之一 冒泡排序的三种实现
- 白话经典算法系列之一 冒泡排序的三种实现
- 白话经典算法系列之一 冒泡排序的三种实现
- 白话经典算法系列之一 冒泡排序的三种实现
- 白话经典算法系列之一 冒泡排序的三种实现
- 白话经典算法系列之一 冒泡排序的三种实现
- mysql表数据导出
- HUST-OJ-1669
- FZU 2197 最小花费(思维题目)
- Makefile语法分析
- CF 598D. Igor In the Museum【DFS】
- 白话经典算法系列之一 冒泡排序的三种实现(转)
- OpenCV 自带例程总结
- 第一篇博客 hexo学习笔记
- JAVA学习笔记01
- poi读写excel 2007
- 字符串三种截取方法iOS
- 盘点Android应用开发中曾经很流行但是已经过时或即将过时的技术
- 基础3
- InstaMaterial:正确处理RecyclerView动画