冒泡排序(C++实现)

冒泡排序简介:

  • 冒泡排序是一种比较简单的排序算法,根据一个序列,比较两个元素,如果顺序不对就交换。
  • 然后依次遍历n个点,一次找出一个最大(最小)值,进行n次,完成排序。

代码实现

基础冒泡排序

#include<iostream>
using namespace std;
int main()
{
    int a[9] = {1,9,2,5,8,3,7,4,6};
    int i,j;
    for(i=0;i<9;i++)
    {
        for(j=8;j>i;j--)
        {
            if(a[j-1] < a[j])
            {
                int temp = a[j-1];
                a[j-1] = a[j];
                a[j] = temp;
            }
        }
    }
    for(int i=0;i<9;i++)
        cout << a[i] << " ";
    return 0;
}

这种冒泡排序无论如何都要执行两层循环,因此无论最优最差时间复杂度均为O(n^2)。

改良版冒泡排序

  • 设置flag,如果上一次有交换,那么设为true,如果没有交换,说明排序已完成,设为false,此时最优时间复杂度为O(n)(即排序一次就知道不用排了)
//只完成一轮循环的冒泡排序
#include<iostream>
using namespace std;
int main()
{
    int a[9] = {9,8,7,6,5,4,3,1,2};
    int i,j;
    for(i=0;i<9;i++)
    {
        bool flag = false;
        for(j=8;j>i;j--)
        {
            if(a[j-1] < a[j])
            {
                int temp = a[j-1];
                a[j-1] = a[j];
                a[j] = temp;
                flag = true;
            }
        }
        if(flag == false)
            break;
    }
    for(int i=0;i<9;i++)
        cout << a[i] << " ";
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 该系列文章主要是记录下自己暑假这段时间的学习笔记,暑期也在实习,抽空学了很多,每个方面的知识我都会另起一篇博客去记...
    Yanci516阅读 12,301评论 6 19
  • 概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的...
    Luc_阅读 2,314评论 0 35
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,235评论 0 52
  • 这是我2016年给自己打卡的计划。 每天还想着要提醒自己完成,而实际则是铃铛一响,顺手按掉,改干嘛干嘛。 本打算一...
    puppyyang阅读 380评论 0 0
  • 绝对不允许别人随便对待你,那怕是你做的不对。
    蜜芽生活阅读 99评论 0 0