排序算法之冒泡算法
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言排序算法是最经典、最基础的算法之一,也是我们学习C语言接触较早的算法,可是你是否真的掌握了排序算法了呢?今天让
前言
排序算法是最经典、最基础的算法之一,也是我们学习C语言接触较早的算法,可是你是否真的掌握了冒泡算法了呢?今天让我们聊一聊排序算法中冒泡算法。
一、定义与基本思路
冒泡排序是一种较简单的排序算法,又称起泡排序。其基本思路是,每次将相邻的两个,每次比较一轮,总会找到序列中最大的一个或最小的一个。最终可以得到一个递增数列或者递减数。
二、例题详解
1.算法实现过程
2.例题讲解
下面以递增数列为例
1).详细代码
# include <stdio.h>
int main()
{
int a[] = {30,5,7,-29,90,89,20,100,24};
int n,i,j,temp;
n = sizeof(a) / sizeof(a[0]);
for (i=0; i<n-1; ++i)
{
for (j=0; j<n-1-i; ++j)
{
if (a[j] > a[j+1])
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
for (i=0; i<n; ++i)
{
printf("%d\x20", a[i]);
}
printf("\n");
return 0;
}
2).运算结果如图所示
注意:空格也是也是一种字符,数组的最后一为一般是空格,注意输出的格式。
3.冒泡算法的核心过程
void Bubble_sort(int a[],int n)
{
int i,j,temp;
for(i=0;i<n-1;i++)//C语言中数组的下标是从0开始,故i最大为n-1
{
for(j=0;j<n-1-i;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
4.时间复杂度分析
通过冒泡算法是基本思想和例题分析,发现冒泡排序算法在每轮排序中会得到一个数最终确定位置,而一个长度为n的数列需要 n-1 轮的比较排序,有例题分析可知,其需要两层for循环,故按照计算时间复杂度的规则,去掉常数和最高项系数,其时间复杂度为O(N^2)。
总结
冒泡算法是一种简单易学的算法,对于上篇(二分查找的简单运用_m0_50708613的博客-CSDN博客)所提到的,面对无序的数列,可以先用冒泡算法进行排序,再采用二分法查找某一个数值,但是冒泡算法是一种效率较低的方法,不适合用于处理大量数据的情况。

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)