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循环输入 ...
最新文章
- re:Invent大会第四天:为什么Lambda值得你更多关注?
- 聊聊架构设计做些什么来谈如何成为架构师
- java sum_java math.sum
- 解决SecureCRT登陆Linux显示中文乱码
- git从远程仓库gitLab上拉取指定分支到本地仓库
- JQuery简要介绍(转)
- [置顶] 【cocos2d-x入门实战】微信飞机大战之三:飞机要起飞了
- BZOJ 1055 [HAOI2008]玩具取名 DP
- 工欲善其事,必先利器—Regex正则表达式工具
- 手把手教你备份 nvidia jetson agx xavier 系统(亲测有效、超详细)
- 那些年看过的电影之《绿皮书》
- 微型计算机硬盘安装在哪,微型计算机的硬盘是该机的
- 在计算机桌面上的回收站作用是,计算机桌面回收站的设置(回收站的概念及设置、使用说明)...
- tenforflow版YOLOv3下COCO格式的raccoon(浣熊)数据集的准备(未完待续)
- CA证书原理(转载)
- 论文解读(XR-Transformer)Fast Multi-Resolution Transformer Fine-tuning for Extreme Multi-label Text Class
- brother标签打印软件_标签打印软件如何导入excel表批量制作光缆标牌
- 广州市黄埔区科技局关于开展区配套科技项目逾期未验收项目清理工作的通知
- Samba服务器的使用
- kali虚拟机中没有ip或者检测不到网卡解决方法