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++实现改进的冒泡排序相关推荐

  1. 冒泡排序和鸡尾酒排序(改进的冒泡排序)

    冒泡排序 冒泡排序是最基本的排序算法,也是排序算法中的经典的算法,也是比较简单.容易理解的算法,而且还可以对其排序过程进行优化. 冒泡排序排序过程总是大数往前放,小数往后放,相当于气泡往上升,所以称作 ...

  2. 改进的冒泡排序算法一

    /*** Project Name:Algorithm* File Name:BubbleSortImprove1.java* Package Name:* Date:2017年9月14日上午11:0 ...

  3. C语言——冒泡排序、改进的冒泡排序

    目录 原理图 完整的冒泡排序 代码 运行结果 改进的冒泡排序 程序 运行结果 原理图 这个我觉得相对易懂 完整的冒泡排序 代码 升序 #include<stdio.h> #include& ...

  4. 冒泡排序算法与改进的冒泡排序算法

    活动地址:CSDN21天学习挑战赛 目录 一.冒泡排序原理 二.冒泡排序流程 三.实例 四.冒泡排序的改进 五.改进的冒泡排序时间性能分析 一.冒泡排序原理 对存放在数组的数据,按从前往后的方向进行多 ...

  5. Java改进的冒泡排序ImprovedBubbleSort

    原理:冒泡排序需要遍历几次数组,每次遍历都要比较相邻的元素,如果某一对降序则互换他们的值,由于较小的值像"气泡"一样浮向顶部,较大的值沉向底部,所以叫冒泡排序. 实例演示: 一般冒 ...

  6. 用汇编写改进的冒泡排序

    实现的排序的次数输出和排完序后数组的输出 DATAS SEGMENTaa db 0,1,2,4,3,5,6,7,8,9temp db ?DATAS ENDSCODES SEGMENTASSUME CS ...

  7. 排序1+1:冒泡排序法(BubbleSort)的改进以及效率比较

    1 我要冒泡 冒泡排序这个名字对于我们来说实在是过于熟悉了.作为一个程序员,如果敢说出自己不会冒泡排序,结局肯定是会被鄙视到火星上去.许多公司到学校去招聘应届毕业生的时候,都会要求写一个冒泡排序.毫无 ...

  8. c语言 冒泡排序算法,排序算法_冒泡排序改进(c语言实现)

    下面是未经改进的冒泡排序算法: #include #include int a[10] = {1,4,3,5,23,2,45,6,3,5}; main() { int i,j,mid; int len ...

  9. 常见的冒泡排序、顺序查找和对半查找

    关于一维数组的排序和查找 排序算法 冒泡排序 改进的冒泡排序 查找算法 顺序查找 对半查找 先看例题从键盘上任意输入8个整数,用冒泡排序法对8个数排序(由小到大) 从键盘上输入整数,利用for循环输入 ...

最新文章

  1. 【Java挠头】Java异常、捕获、处理、throw、throws等绝妙剖析
  2. linux用户登陆后无法加在.bashrc
  3. 正确预测适合自己的职业
  4. oracle sql判断值为空,Oracle,sqlserver的空值(null)判断
  5. multipartfile 获取音频时长_我在音频平台日赚150元的正确打开方式。或许适合你...
  6. nginx mysql设置远程连接超时_nginx中的超时设置
  7. 微信小程序把玩(三十二)Image API
  8. 设计模式---面向对象的设计原则概述
  9. SpringCloud学习笔记019---Windows 平台安装 MongoDB
  10. Android 使用AsyncTask 后监听异步加载完毕的动作
  11. python,错误、调试和测试
  12. JavaScript 变量声明提前
  13. python-面试通关宝典
  14. selenium基础②:模拟QQ空间登录
  15. CentOS7 五步安装搜狗拼音输入法
  16. 街篮最新服务器,街头篮球各区的服务器IP多少
  17. 分享一个插件-水珠自动下落效果
  18. 寒假每日一题——贝茜放慢脚步
  19. POJ 1581 A Contesting Decision
  20. 互联网保险产品设计:保险理赔

热门文章

  1. nmtui 和 nmcli 命令 配置网络
  2. 谷歌员工的“腐败”生活
  3. K8S 部署 coredns
  4. vim 支持日语显示
  5. category显示html,wordpress文章.html伪静态,分类category和页面设置 - 搜外SEO问答
  6. Python回文数判断
  7. 利用onblur事件实现文本框中英文字母全部转换成大写
  8. Docker安装mysql,挂载外部配置和数据时启动失败
  9. matlab 并行计算使用心得 (不断补充)
  10. 【Flutter】友盟智能认证Android Flutter插件集成