博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
起泡排序(Bubble sort)
阅读量:4356 次
发布时间:2019-06-07

本文共 907 字,大约阅读时间需要 3 分钟。

局部有序和整体有序

在由一组整数组成的序列A[0, n-1]中,满足 $ A[i - 1] \leq A[i] $ 的相邻元素称为顺序的;否则是逆序的。

扫描交换

由有序序列的特征,我们可以通过不断改善局部的有序性实现整体的有序性:从前向后依次检查每一对相邻元素,一旦发现逆序即交换二者的位置。对于长度为n的序列,共需做n-1次比较,和不超过n-1次交换,这一过程称为一趟扫描交换。

1037555-20190323210049492-157436521.png

起泡排序

void bubblesort(int A[], int n){    bool sorted = false; // 整体排序标志,先假定未排序    while(!sorted)    {        sorted = true; // 假定已排序        for(int i = 1; i < n; i++)        {            if(A[i-1] > A[i])            {                swap(A[i-1], A[i]); // 逆序交换                sorted = false; // 出现逆序,所以整体排序为false            }        }                n--; // 末元素已就位,可缩短待排序序列长度    }} // 借助bool型标志位sorted,可及时提前退出,而不用总是蛮力地做n-1趟扫描交换

不可提前退出算法

void bubblesort(int A[], int n){    for(int i = 0; i < n-1; i++) // n-1趟扫描    {        for(int j = 0; j < n-1-i; j++) // 末元素已就位,可减少待排序个数        {            if(A[j] > A[j+1])                swap(A[j], A[j+1]);        }    }}

转载于:https://www.cnblogs.com/huerxiong/p/10585634.html

你可能感兴趣的文章
C++:文件的输入和输出
查看>>
Http协议、Tomcat、servlet
查看>>
Spring Boot (11) mybatis 关联映射
查看>>
macOS 下安装tomcat
查看>>
字符串格式化复习笔记
查看>>
c++ 宏定义调用不定参数的函数
查看>>
动态规划典型例题--背包问题九讲
查看>>
Qt之QHeaderView自定义排序(终极版)
查看>>
python----logging
查看>>
LBP特征 学习笔记
查看>>
与TIME_WAIT相关的几个内核参数修改测试讨论结论
查看>>
webpack构建react应用三:使用webpack Loaders 模块加载器(一)
查看>>
Java JDBC
查看>>
走势终完美 --执子之手
查看>>
补全左括号
查看>>
javascript中关于坐标 大小 的描述
查看>>
8086CPU各寄存器的用途
查看>>
AngularJs中,如何在render完成之后,执行Js脚本
查看>>
Nginx 防盗链
查看>>
如何讓Android系統顯示CJK擴展區漢字
查看>>