冒泡算法(BubbleSort)
冒泡算法核心就是遍历数组,从头或者尾部开始比较大小,从头部比较的话(升序)将大的换到右边,从头开始,遍历一次就是将数据最大的放在最后边,然后第二遍遍历就是将第二大放在右边第二的位置。
遍历结束是完整遍历没有交换。
例子如图:
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)相关推荐
- 冒泡算法的三种JavaScript表示
以前学习冒泡算法,总是弄不清楚n和n-1等一些变量的关系,原因是没有弄明白它的真正含义,今天写了一个冒泡算法的JS小程序,终于弄明白了. var R1=new Array(); R1[1]=35; R ...
- php的冒泡算法,PHP实现冒泡算法
冒泡算法 function bubbleSort($ary){ $len = count($ary); for ($i=0; $i < $len - 1; $i++) { for ($j=0; ...
- 13_冒泡算法(附完整java代码)
13_冒泡算法 一.基本介绍 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前 ...
- Java实现冒泡算法及优化冒泡算法
基本思想 冒泡排序(Bubble Sort)通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序(前后大小与要求的顺序不一致)则交换,使值较大的元素逐渐从前移向后部,就象 ...
- php冒泡算法排序,PHP算法大全(2)冒泡排序算法解决差生排序问题
前言 算法是有用的,也是枯燥的,我们尽量用生活中的例子来描述.排序算法是算法中最基础的部分,今天我们一起来排序算法中的冒泡排序算法. 内容概要: 1.什么是冒泡算法-差生排序问题. 2.冒泡算法的动画 ...
- 冒泡算法代码java_java版本的冒泡算法
/** 文件名:MAOPao.java 描述: java版本的冒泡算法 作者:慈勤强 Email:cqq1978@Gmail.com **/ http://www.gaodaima.com/?p=42 ...
- python冒泡算法_python_冒泡算法
什么是冒泡算法? -- 像鱼吐泡泡一样,每次都是向上冒出一个水泡 如何逻辑整理? -- 先拿第一个值和剩下的值,一一比较,必能找到最大的或者最小的 -- 比较过程中,第一个值小于剩下的某个值,交换位置 ...
- C语言:使用冒泡算法将数组中的数据从大到小进行排序
/*使用冒泡算法将数组中的数据从大到小进行排序*/ #include<stdio.h> #define N 5 int main() {int a[N];int i,j,t;printf( ...
- Java算法之冒泡算法
第一种方法:(不限制输入数组的长度) 基本想法:冒泡排序是通过一系列的"交换"动作完成的,首先第一个关键字和第二个关键字比较,如果第一个大,则二者交换,否则不交换:然后第二个关键字 ...
最新文章
- miui9Android8.0更新,MIUI9 暂停更新工作,或为 MIUI 10 将至?
- android UI设计时须要注意遵循的设计原则
- 【Go语言】【15】GO语言的面向对象
- Mybatis的几种传参方式
- 蓝桥杯——阿尔法乘积
- description方法 oc 就是NSLog使用
- 阿里云短信sdk的懒人用法
- HFSS - 圆形双馈微带天线
- 今年职高计算机数学高考试题,湖南职高对口数学高考试卷
- 女生叫你哥和大哥区别_大哥正望着你
- 基于组件开发——应用软件开发的革命
- sql server2000安装quot;挂起quot;的解决方法
- webstorm 打开项目java.io.IOEXception:couldn't create PTY
- 给北上奋进的你一份礼物(java面试知识储备攻略)
- 出现Head https://registry-1.docker.io/v2/library/node/manifests/14-alpine的解决方法
- 逆变器锁相原理及DSP实现
- 微信小程序中navigator没有反应
- Beats 使用详解
- Capture One pro 21 for Mac(RAW转换和图像编辑工具)
- 防止按钮重复点击的解决方案与思路