? ?
活动地址:CSDN21天学习挑战赛
??作者简介:大家好我是小唐同学(?>?<?),为梦想而奋斗的小唐,让我们一起加油!!!
个人主页:小唐同学(?>?<?)的博客主页
系列专栏:数据结构
博友们如果也是新手入门数据结构我希望大家可以多加练习 数据结构题库在牛客网就有已经给大家附上链接,可以直接点击跳转:刷题点这里
牛客网支持ACM模式哦,刷算法题也很推荐哦!!!
下面上文章------》
目录
刷题推荐:
背景:
算法思想:
算法步骤:
输入:
输出:
代码演示:
时间复杂度:
空间复杂度:
刷题推荐:
背景:
冒泡排序又称起泡排序,是经典的排序算法,思想简单,但是排序速度不够快,不够优化。后边分析到时间复杂的便可得知。
算法思想:
冒泡排序的算法思想就是无序区中的元素进行两两比较,不满足大小就进行元素交换,如果不需要进行交换说明是满足排序要求的。
冒泡排序就是依次比较确定出无序区的最小值前提归入有序区(升序)
算法步骤:
输入:
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]);
}
}
时间复杂度:
最优状态下:这种情况下是原本序列就是有序的 进行遍历一遍 则时间复杂度为:O(n);
最坏状态下:这种状态是原本序列是完全乱序的 每次进行判断都要进行交换 则时间复杂度为:
O(n*n);
平均时间复杂度为:O(n*n);
空间复杂度:
冒泡排序中用到的额外空间是常数(中间变量temp)
则空间复杂度为:O(1);
|