冒泡算法核心就是遍历数组,从头或者尾部开始比较大小,从头部比较的话(升序)将大的换到右边,从头开始,遍历一次就是将数据最大的放在最后边,然后第二遍遍历就是将第二大放在右边第二的位置。
遍历结束是完整遍历没有交换。
例子如图:

2 3 5 1 6 4 初始数组
2 3 1 5 4 6 第一次遍历结束。 最大的6在最后边
2 1 3 4 5 6 第二次遍历结束。 第二大5在右边
1 2 3 4 5 6 第三次遍历结束。 发现已经遍历完成
1 2 3 4 5 6 第四次遍历结束。 这次必须再遍历,因为必须判断没有交换就是顺序完成时,但是第三次遍历仍然交换1与2,因此需要遍历第四遍。

逆序同理

代码如下:c++

#include "iostream"
#define  MAXSIZE 21
using namespace std;struct SqList{int data[MAXSIZE];int length;
};SqList initList(){SqList sqList;sqList.length = 0;int N, tmp;cin >> N;for (int i = 0; i < N; ++i) {cin >> tmp ;sqList.data[sqList.length++] = tmp;}return sqList;
}void swap(int &a, int &b){int tmp = a;a = b;b = tmp;
}void BubbleSort(SqList *sqList){for (int i = 0; i < sqList->length; ++i) {bool flag = false;for (int j = 0; j < sqList->length - 1; ++j) {if (sqList->data[j] > sqList->data[j+1]){swap(sqList->data[j],sqList->data[j+1]);flag = true;}}if (!flag){return;}}
}void BubbleSortInverse(SqList *sqList){for (int i = 0; i < sqList->length; ++i) {bool flag = false;for (int j = sqList->length; j > 0; --j) {if (sqList->data[j] < sqList->data[j-1]){swap(sqList->data[j],sqList->data[j-1]);flag = true;}}if (!flag){return;}}
}void printList(SqList sqList){for (int i = 0; i < sqList.length; ++i) {cout << sqList.data[i] << " ";}
}int main(){SqList sqList = initList();BubbleSort(&sqList);printList(sqList);return 0;
}

冒泡算法(BubbleSort)相关推荐

  1. 冒泡算法的三种JavaScript表示

    以前学习冒泡算法,总是弄不清楚n和n-1等一些变量的关系,原因是没有弄明白它的真正含义,今天写了一个冒泡算法的JS小程序,终于弄明白了. var R1=new Array(); R1[1]=35; R ...

  2. php的冒泡算法,PHP实现冒泡算法

    冒泡算法 function bubbleSort($ary){ $len = count($ary); for ($i=0; $i < $len - 1; $i++) { for ($j=0; ...

  3. 13_冒泡算法(附完整java代码)

    13_冒泡算法 一.基本介绍 ​ 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前 ...

  4. Java实现冒泡算法及优化冒泡算法

    基本思想 冒泡排序(Bubble Sort)通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序(前后大小与要求的顺序不一致)则交换,使值较大的元素逐渐从前移向后部,就象 ...

  5. php冒泡算法排序,PHP算法大全(2)冒泡排序算法解决差生排序问题

    前言 算法是有用的,也是枯燥的,我们尽量用生活中的例子来描述.排序算法是算法中最基础的部分,今天我们一起来排序算法中的冒泡排序算法. 内容概要: 1.什么是冒泡算法-差生排序问题. 2.冒泡算法的动画 ...

  6. 冒泡算法代码java_java版本的冒泡算法

    /** 文件名:MAOPao.java 描述: java版本的冒泡算法 作者:慈勤强 Email:cqq1978@Gmail.com **/ http://www.gaodaima.com/?p=42 ...

  7. python冒泡算法_python_冒泡算法

    什么是冒泡算法? -- 像鱼吐泡泡一样,每次都是向上冒出一个水泡 如何逻辑整理? -- 先拿第一个值和剩下的值,一一比较,必能找到最大的或者最小的 -- 比较过程中,第一个值小于剩下的某个值,交换位置 ...

  8. C语言:使用冒泡算法将数组中的数据从大到小进行排序

    /*使用冒泡算法将数组中的数据从大到小进行排序*/ #include<stdio.h> #define N 5 int main() {int a[N];int i,j,t;printf( ...

  9. Java算法之冒泡算法

    第一种方法:(不限制输入数组的长度) 基本想法:冒泡排序是通过一系列的"交换"动作完成的,首先第一个关键字和第二个关键字比较,如果第一个大,则二者交换,否则不交换:然后第二个关键字 ...

最新文章

  1. miui9Android8.0更新,MIUI9 暂停更新工作,或为 MIUI 10 将至?
  2. android UI设计时须要注意遵循的设计原则
  3. 【Go语言】【15】GO语言的面向对象
  4. Mybatis的几种传参方式
  5. 蓝桥杯——阿尔法乘积
  6. description方法 oc 就是NSLog使用
  7. 阿里云短信sdk的懒人用法
  8. HFSS - 圆形双馈微带天线
  9. 今年职高计算机数学高考试题,湖南职高对口数学高考试卷
  10. 女生叫你哥和大哥区别_大哥正望着你
  11. 基于组件开发——应用软件开发的革命
  12. sql server2000安装quot;挂起quot;的解决方法
  13. webstorm 打开项目java.io.IOEXception:couldn't create PTY
  14. 给北上奋进的你一份礼物(java面试知识储备攻略)
  15. 出现Head https://registry-1.docker.io/v2/library/node/manifests/14-alpine的解决方法
  16. 逆变器锁相原理及DSP实现
  17. 微信小程序中navigator没有反应
  18. Beats 使用详解
  19. Capture One pro 21 for Mac(RAW转换和图像编辑工具)
  20. 防止按钮重复点击的解决方案与思路

热门文章

  1. PDF文件转DWG文件用CAD转换器可以操作吗?
  2. MorphSVGPlugin from GreenSock 的源码注释分析
  3. Pacific Atlantic Water Flow 太平洋大西洋水流问题
  4. Bing必应(Yahoo雅虎)搜索引擎登录网站 - Blog透视镜
  5. SIM卡运营商信息整理
  6. 基于Tushare数据库统计混合型基金前十大重仓股持仓变化
  7. 独立后台2.0全新版本微信红包封面抽奖流量主小程序 裂变快 收益高
  8. leetcode题解:两数相除
  9. python之subprocess
  10. 弈剑听雨阁战场克敌生存最新1.0版