美文网首页大数据程序员互联网科技
小朋友学数据结构(12):冒泡排序

小朋友学数据结构(12):冒泡排序

作者: 海天一树X | 来源:发表于2018-08-26 11:06 被阅读3次

咱们在学C语言的时候,学过冒泡排序,请参考《小朋友学C语言(26):冒泡排序》:https://www.jianshu.com/p/587ff823ba5b

《大话数据结构》第九章,讲了一种优化的冒泡排序,完整代码如下:

#include<iostream>
using namespace std;

#define MAX 5
typedef struct
{
    int r[MAX + 1];
    int len;
}seq;


void myswap(seq *x, int i, int j)
{
    int temp = x->r[i];
    x->r[i] = x->r[j];
    x->r[j] = temp;
}


void bubbleSort(seq *x)
{
    bool flag = true;
    // i表示第几轮比较,不表示数组下标
    for (int i = 1; i < x->len && flag; i++)
    {
        cout << "第" << i << "轮排序:";
        flag = false;
        // j表示数组下标,这里是从后往前比较,能同时挪动多个,提高了效率
        // 比如,{3, 2, 1, 5, 4}经过一轮比较变成{1, 3, 2, 4, 5}
        for (int j = x->len - 1; j >= i; j--)
        {
            if (x->r[j] > x->r[j + 1])
            {
                myswap(x, j, j + 1);
                flag = true;
            }
        }

        for(int i = 1; i <= x->len; i++)
        {
            cout << x->r[i] << ' ';
        }
        cout << endl;
    }
}


int main()
{
    cout << "输入数据:";
    seq s;
    for(int i = 1; i <= MAX; i++)
    {
        cin >> s.r[i];
    }
    s.len = MAX;

    bubbleSort(&s);

    cout << "排序结果:";
    for(int i = 1; i <= s.len; i++)
    {
        cout << s.r[i] << ' ';
    }
    cout << endl;

    return 0;
}

运行结果:

输入数据:3 2 1 5 4
第1轮排序:1 3 2 4 5
第2轮排序:1 2 3 4 5
第3轮排序:1 2 3 4 5
排序结果:1 2 3 4 5

加入少儿信息学奥赛QQ群请扫左侧二维码,关注微信公众号请扫右侧二维码


QQ群和公众号.png

相关文章

  • 小朋友学数据结构(12):冒泡排序

    咱们在学C语言的时候,学过冒泡排序,请参考《小朋友学C语言(26):冒泡排序》:https://www.jians...

  • 2019-05-13

    今天看数据结构那个冒泡排序还有看flask框架

  • 基础排序算法

    一 冒泡排序(buddle sort) 众所周知,冒泡排序一般是我们接触数据结构与算法里面的第一种排序算法。其经典...

  • 冒泡排序&选择排序

    在本科时学的数据结构,所以还是先用c语言描述。本文今天(2018.9.25)先讨论两种简单的排序1.冒泡排序2.选...

  • Python 算法大全

    这个库涵盖了多种算法和数据结构的介绍,比如: 排序算法(冒泡排序、希尔排序、插入排序、桶排序、合并排序、快速排序、...

  • C语言:关于数据的几种排序算法

    数据结构的排序算法有很多种。其中,快速排序、希尔排序、堆排序、直接选择排序不是稳定的排序算法;基数排序、冒泡排序、...

  • 基本排序简单介绍(一)

    下一篇: 基本排序介绍(二) 提到数据结构,那就不得不提及一些排序的算法。废话不多说,下面上代码。 冒泡排序 冒泡...

  • 021-数据结构与算法-排序

    基础方法或者数据结构的定义: 冒泡排序 选择排序 插入排序 希尔排序 希尔排序思想: 希尔排序是把记录按下标的一定...

  • 算法与数据结构路线图

    学习算法与数据结构,深刻理解计算机科学 排序算法:插入、冒泡、选择、希尔、快速、归并、堆排序、计数排序、桶排序、基...

  • 算法-冒泡排序

    算 法:冒泡排序算法时间复杂度: 冒泡排序算法概述 冒泡排序伪代码 冒泡排序实现 冒泡排序算法概述 冒泡排...

网友评论

    本文标题:小朋友学数据结构(12):冒泡排序

    本文链接:https://www.haomeiwen.com/subject/intoiftx.html