冒泡排序优化算法思想:我们通过在程序定义了一个bool类型的flag变量,用来判断往后的循环当中,数组是否已经是有序的,每一轮循环都会设置其值为true,当有元素对调位置时,就将flag的值设置为true,表示该数组还不是有序数组。每一轮都要判断flag的值,如果判断当前一轮操作没有元素有位置调换,那么可以提前结束所有的循环。

void bubble_sort(int* a,int sz)
{int i, j;if (a == NULL)return;int temp = 0;int flag = true;  //用来标记是否存在数据位置的转换for (i = 1; i < sz&&flag; ++i)  //控制循环比较的次数{flag = false;for (j = sz - 1; j >= i; --j)  {if (a[j] < a[j - 1]){temp = a[j];a[j] = a[j - 1];a[j - 1] = temp;flag = true;}}}
}int main()
{int arr[] = { 4, 6, 5, 8, 9, 3, 2, 1, 7 };int size = sizeof(arr) / sizeof(int);bubble_sort(arr, size);for (int i = 0; i < size; i++){cout << arr[i] << " ";}cout << endl;return 0;
}

转载于:https://www.cnblogs.com/single-dont/p/11317553.html

排序算法之——冒泡排序优化相关推荐

  1. 十大排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序

    冒泡排序.选择排序.插入排序.希尔排序.归并排序.快速排序.堆排序.计数排序.桶排序.基数排序的动图与源代码. 目录 关于时间复杂度 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 ...

  2. php编写冒泡排序算法_PHP排序算法之冒泡排序(Bubble Sort)实现方法详解

    本文实例讲述了PHP排序算法之冒泡排序(Bubble Sort)实现方法.分享给大家供大家参考,具体如下: 基本思想: 冒泡排序是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换 ...

  3. Java排序算法:冒泡排序

    Java排序算法:冒泡排序 //创建数组并赋值int[] data = new int[] {11,10,55,78,100,111,45,56,79,90,345,1000};for(int i=0 ...

  4. 排序算法:冒泡排序、插入排序、选择排序、希尔排序

    相关博客: 排序算法:冒泡排序.插入排序.选择排序.希尔排序 排序算法:归并排序.快速排序 排序算法:桶排序.计数排序.基数排序 排序算法:堆排序 十大排序算法小结 一.冒泡排序: 1.算法原理: 冒 ...

  5. golang 排序_常用排序算法之冒泡排序

    周末无事,带娃之余看到娃娃在算数,想到了排序-尝试着把几种常用的排序算法跟大家聊一聊,在分析的后面我会用GoLang.PHP和JS三种语言来实现下. 常见的基于选择的排序算法有冒泡排序.插入排序.选择 ...

  6. 数据结构与算法:十大排序算法之冒泡排序

    数据结构与算法:十大排序算法之冒泡排序 package array;import java.util.Arrays;//冒泡排序 //1.比较数组中两个相邻的元素,如果第一个数比第二个数大,我们就交换 ...

  7. 【排序算法】冒泡排序、简单选择排序、直接插入排序比较和分析

    [排序算法]冒泡排序.简单选择排序.直接插入排序比较和分析 写在前面: 本文简单介绍了冒泡排序.简单选择排序.直接插入排序,并对这三种排序进行比较,入参都是80000个随机数,比较算法耗时.进一步,我 ...

  8. 排序算法(1)冒泡排序

    排序算法(1)冒泡排序 原理: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该会是最大的数. 3. ...

  9. 冒泡和快速排序的时间复杂度_常用排序算法之冒泡排序

    周末无事,带娃之余看到娃娃在算数,想到了排序-尝试着把几种常用的排序算法跟大家聊一聊,在分析的后面我会用GoLang.PHP和JS三种语言来实现下. 常见的基于选择的排序算法有冒泡排序.插入排序.选择 ...

最新文章

  1. python 笛卡尔积,排列,组合
  2. 谈谈程序链接及分段那些事
  3. Redis分布式锁的实现原理
  4. FreeRTOS如何结束和重新启动调度程序
  5. 直播预告|阿里云容器网络文件系统发布会
  6. 这个时代再也难出现贵子
  7. vnc远程控制linux密码,如何使用VNC远程控制Linux(Centos)?
  8. mysql redo查看_mysql redo
  9. 深度学习笔记(15) 人的表现
  10. 【SPARC】SPARC V8寄存器介绍
  11. 基于Idea的Spark大数据分析--scala
  12. 【UE4 附源工程】VR直升机模拟飞行与轰炸制作流程
  13. 图像处理-007形态变换(二)
  14. 28、完美的RestApi
  15. 头条:每6个中国人就有1个中招的!
  16. 基于蜉蝣优化算法的函数寻优算法
  17. 电路板之间接线的注意方法
  18. 基于ZigBee的室内无线定位系统设计
  19. 计算机常用计量单位,计量符号-计算机中的有些计量单位例如G、MB是表示什 – 手机爱问...
  20. java计算机毕业设计高校通用运动会管理信息系统源程序+mysql+系统+lw文档+远程调试

热门文章

  1. mf怎么使mysql信息分区_细聊MySQL的分区功能
  2. 生日快乐程序_别@官方了!云开发教你制作个性头像小程序,以后过节想加啥就加啥!...
  3. 黄梅理工学校计算机,黄梅理工学校2021年有哪些专业
  4. Ajax后端极简笔记
  5. Nutch+Hadoop集群搭建
  6. Scala入门到精通——第二十三节 高级类型 (二)
  7. FAIR重磅发布大规模语料库XNLI:解决跨15种语言理解难题
  8. 互联网广告系统综述四定向
  9. 黑马程序员-内部类总结和笔记
  10. LNMP Nginx 499 问题 第三方回调异常