C++实现改进的冒泡排序
C++实现改进的冒泡排序
冒泡排序法(Bubble Sort),即起泡排序并不能改观普通排序的时间复杂度,还是O(n^2)。冒泡排序法是从后往前两两比较,然后遍历整个数组,犹如鱼吐水泡,故起此名。而普通排序法是遍历整个数组,然后每个元素和后面的所有元素进行比较,升序则是后面小的和该元素互换位置,但这样可能将很小的元素移到后面。
改进的冒泡排序是通过设立一个标志位Flag,当检测到升降序排序时完成时候,置位标志位Flag,提前结束排序。传统冒泡排序和改进的排序程序比较如下:
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
/********************************传统冒泡升序排序
********************************/
void BubbleSort(int *data, int nLen)
{for(int i=0; i<nLen;i++){for(int j=nLen-1;j>i;j--){if(data[j-1]>data[j])swap(data[j-1],data[j]); } }
}
/********************************优化冒泡升序排序
设置标志位来提前结束早排序完成情况
********************************/
void OptimBubbleSort(int *data, int nLen )
{bool flag = false; //设立一个标志位for(int i=0;(i<nLen) &&(flag == false);i++){flag = true;for(int j=nLen-1;j>i;j--){if(data[j-1]>data[j]){swap(data[j-1],data[j]);flag = false;}} }
}
int main()
{int nArr[100],nLen=0;char c;//键盘输入一行数据,空格隔开while((c=getchar())!= '\n') {if(c != ' '){ungetc(c,stdin);cin>>nArr[nLen++]; } }//BubbleSort(nArr, nLen); //普通冒泡排序 OptimBubbleSort(nArr, nLen);//改进冒泡排序for(int j=0;j<nLen;j++){cout<<nArr[j]<<' ';}cout<<endl;return 0;
}
转载:http://blog.csdn.net/fx677588/article/details/53406327 csdn无鞋童鞋 感谢博主分享
C++实现改进的冒泡排序相关推荐
- 冒泡排序和鸡尾酒排序(改进的冒泡排序)
冒泡排序 冒泡排序是最基本的排序算法,也是排序算法中的经典的算法,也是比较简单.容易理解的算法,而且还可以对其排序过程进行优化. 冒泡排序排序过程总是大数往前放,小数往后放,相当于气泡往上升,所以称作 ...
- 改进的冒泡排序算法一
/*** Project Name:Algorithm* File Name:BubbleSortImprove1.java* Package Name:* Date:2017年9月14日上午11:0 ...
- C语言——冒泡排序、改进的冒泡排序
目录 原理图 完整的冒泡排序 代码 运行结果 改进的冒泡排序 程序 运行结果 原理图 这个我觉得相对易懂 完整的冒泡排序 代码 升序 #include<stdio.h> #include& ...
- 冒泡排序算法与改进的冒泡排序算法
活动地址:CSDN21天学习挑战赛 目录 一.冒泡排序原理 二.冒泡排序流程 三.实例 四.冒泡排序的改进 五.改进的冒泡排序时间性能分析 一.冒泡排序原理 对存放在数组的数据,按从前往后的方向进行多 ...
- Java改进的冒泡排序ImprovedBubbleSort
原理:冒泡排序需要遍历几次数组,每次遍历都要比较相邻的元素,如果某一对降序则互换他们的值,由于较小的值像"气泡"一样浮向顶部,较大的值沉向底部,所以叫冒泡排序. 实例演示: 一般冒 ...
- 用汇编写改进的冒泡排序
实现的排序的次数输出和排完序后数组的输出 DATAS SEGMENTaa db 0,1,2,4,3,5,6,7,8,9temp db ?DATAS ENDSCODES SEGMENTASSUME CS ...
- 排序1+1:冒泡排序法(BubbleSort)的改进以及效率比较
1 我要冒泡 冒泡排序这个名字对于我们来说实在是过于熟悉了.作为一个程序员,如果敢说出自己不会冒泡排序,结局肯定是会被鄙视到火星上去.许多公司到学校去招聘应届毕业生的时候,都会要求写一个冒泡排序.毫无 ...
- c语言 冒泡排序算法,排序算法_冒泡排序改进(c语言实现)
下面是未经改进的冒泡排序算法: #include #include int a[10] = {1,4,3,5,23,2,45,6,3,5}; main() { int i,j,mid; int len ...
- 常见的冒泡排序、顺序查找和对半查找
关于一维数组的排序和查找 排序算法 冒泡排序 改进的冒泡排序 查找算法 顺序查找 对半查找 先看例题从键盘上任意输入8个整数,用冒泡排序法对8个数排序(由小到大) 从键盘上输入整数,利用for循环输入 ...
最新文章
- 【Java挠头】Java异常、捕获、处理、throw、throws等绝妙剖析
- linux用户登陆后无法加在.bashrc
- 正确预测适合自己的职业
- oracle sql判断值为空,Oracle,sqlserver的空值(null)判断
- multipartfile 获取音频时长_我在音频平台日赚150元的正确打开方式。或许适合你...
- nginx mysql设置远程连接超时_nginx中的超时设置
- 微信小程序把玩(三十二)Image API
- 设计模式---面向对象的设计原则概述
- SpringCloud学习笔记019---Windows 平台安装 MongoDB
- Android 使用AsyncTask 后监听异步加载完毕的动作
- python,错误、调试和测试
- JavaScript 变量声明提前
- python-面试通关宝典
- selenium基础②:模拟QQ空间登录
- CentOS7 五步安装搜狗拼音输入法
- 街篮最新服务器,街头篮球各区的服务器IP多少
- 分享一个插件-水珠自动下落效果
- 寒假每日一题——贝茜放慢脚步
- POJ 1581 A Contesting Decision
- 互联网保险产品设计:保险理赔