数据结构之冒泡排序

简介: 数据结构之冒泡排序


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

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

image.gif 编辑

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

系列专栏:数据结构

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

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

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

目录

刷题推荐:

背景:

算法思想:

算法步骤:

输入:

输出:

代码演示:

时间复杂度:

空间复杂度:


刷题推荐:

image.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)

相关文章
|
11天前
|
算法 搜索推荐
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
本文介绍了冒泡排序、选择排序和插入排序三种基础排序算法的原理、实现代码和测试结果。
12 0
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
|
2月前
|
存储 算法 搜索推荐
【初阶数据结构篇】冒泡排序和快速排序(中篇)
与直接插入排序法相比,比较次数一致,但冒泡排序的交换需要执行三次,而直接插入排序因为使用了tmp临时变量存储要插入的数据,只用执行一次,所以直接插入排序法效率明显更高。
28 1
|
3月前
|
搜索推荐
【数据结构常见七大排序(三)上】—交换排序篇【冒泡排序】And【快速排序】
【数据结构常见七大排序(三)上】—交换排序篇【冒泡排序】And【快速排序】
【数据结构常见七大排序(三)上】—交换排序篇【冒泡排序】And【快速排序】
|
4月前
|
机器学习/深度学习 算法 搜索推荐
数据结构算法--2 冒泡排序,选择排序,插入排序
**基础排序算法包括冒泡排序、选择排序和插入排序。冒泡排序通过相邻元素比较交换,逐步将最大值“冒”到末尾,平均时间复杂度为O(n^2)。选择排序每次找到剩余部分的最小值与未排序部分的第一个元素交换,同样具有O(n^2)的时间复杂度。插入排序则类似玩牌,将新元素插入到已排序部分的正确位置,也是O(n^2)复杂度。这些算法适用于小规模或部分有序的数据。**
|
4月前
|
算法 搜索推荐
数据结构与算法-冒泡排序
数据结构与算法-冒泡排序
25 2
|
4月前
|
算法
数据结构和算法学习记录——时间复杂度的计算(嵌套循环、大O的渐进表示法、双重循环、常数循环、strchr、冒泡排序、二分查找、斐波那契数列递归)
数据结构和算法学习记录——时间复杂度的计算(嵌套循环、大O的渐进表示法、双重循环、常数循环、strchr、冒泡排序、二分查找、斐波那契数列递归)
361 1
|
4月前
|
搜索推荐 算法 大数据
​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
|
5月前
|
存储 搜索推荐 算法
[数据结构]————排序总结——插入排序(直接排序和希尔排序)—选择排序(选择排序和堆排序)-交换排序(冒泡排序和快速排序)—归并排序(归并排序)
[数据结构]————排序总结——插入排序(直接排序和希尔排序)—选择排序(选择排序和堆排序)-交换排序(冒泡排序和快速排序)—归并排序(归并排序)
|
4月前
|
人工智能 算法 C语言
数据结构与算法——简单排序-冒泡排序、插入排序,时间复杂度下界(图示、代码、时间复杂度、定理)
数据结构与算法——简单排序-冒泡排序、插入排序,时间复杂度下界(图示、代码、时间复杂度、定理)
32 0
|
4月前
|
存储 机器学习/深度学习 算法
数据结构和算法学习记录——空间复杂度的计算(冒泡排序、阶乘递归、斐波那契数列递归、常见复杂度对比、栈帧、栈溢出)
数据结构和算法学习记录——空间复杂度的计算(冒泡排序、阶乘递归、斐波那契数列递归、常见复杂度对比、栈帧、栈溢出)
35 0