开发者社区> (小唐同学)> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

数据结构之冒泡排序

简介: 数据结构之冒泡排序
+关注继续查看


活动地址:CSDN21天学习挑战赛

  作者简介:大家好我是小唐同学(๑>؂<๑),为梦想而奋斗的小唐,让我们一起加油!!!

image

image.gif编辑

个人主页:小唐同学(๑>؂<๑)的博客主页

系列专栏:数据结构

博友们如果也是新手入门数据结构我希望大家可以多加练习 数据结构题库在牛客网就有已经给大家附上链接,可以直接点击跳转:刷题点这里

牛客网支持ACM模式哦,刷算法题也很推荐哦!!!

下面上文章------》

目录

刷题推荐:

背景:

算法思想:

算法步骤:

输入:

输出:

代码演示:

时间复杂度:

空间复杂度:


刷题推荐:

imageimage.gif编辑

背景:

冒泡排序又称起泡排序,是经典的排序算法,思想简单,但是排序速度不够快,不够优化。后边分析到时间复杂的便可得知。

算法思想:

冒泡排序的算法思想就是无序区中的元素进行两两比较,不满足大小就进行元素交换,如果不需要进行交换说明是满足排序要求的。

冒泡排序就是依次比较确定出无序区的最小值前提归入有序区(升序)

算法步骤:

输入:

n个数的序列(数组--乱序/有序)

输出:

输出指定次序的序列

代码演示:

# include  <stdio.h>
int main()
{
    int n;
    scanf("%d",&n);
    int a[n];
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(int i=0;i<n;i++)//升序 
    {
        for(int j=i+1;j<n;j++)
        {   
            if(a[j]<a[i])
        {
            int temp=a[j];
            a[j]=a[i];
            a[i]=temp;
        }
            
        }
    }
    for(int i=0;i<n;i++)
    {
        printf("%d ",a[i]);
    }
}

image.gif

时间复杂度:

最优状态下:这种情况下是原本序列就是有序的 进行遍历一遍 则时间复杂度为:O(n)

最坏状态下:这种状态是原本序列是完全乱序的 每次进行判断都要进行交换 则时间复杂度为:

O(n*n);

平均时间复杂度为:O(n*n);

空间复杂度:

冒泡排序中用到的额外空间是常数(中间变量temp)

空间复杂度为O(1)

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
数据结构——排序算法
数据结构——排序算法
6 0
Java数据结构与算法——冒泡排序
Java数据结构与算法——冒泡排序
13 0
数据结构-排序
数据结构-排序
50 0
(JAVA编程):数据结构与算法------冒泡排序。
(JAVA编程):数据结构与算法------冒泡排序。
45 0
数据结构排序算法
数据结构排序算法
36 0
数据结构与算法之冒泡排序(含改进版)
冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。
68 0
数据结构与算法之树结构基础
线性结构中不论是数组还是链表,他们都存在着诟病;比如查找某个数必须从头开始查,消耗较多的时间。使用树结构,在插入和查找的性能上相对都会比线性结构要好
59 0
数据结构与算法之归并排序
归并排序(Merge Sort)是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。
31 0
+关注
(小唐同学)
保持学习,持续前进
55
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载