算法思想:从第一个开始,相邻两个数进行比较,如果前1个数大于后一个数,则进行调换,这样换到最后,最大的那个就会在最后面,重复这个过程,较大的就会逐个累积在后面,本质思想就是大的在一轮中会逐渐冒泡到后排。
//冒泡排序
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[10]={2,1,3,5,4,6,7,9,8};
int i,j,t,k;
for (i=0;i<9;i++)//比较n-1趟
{
for(j=0;j<9-i;j++)//每趟比较【n-趟数】次
{
if(a[j]<a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
for(k=0;k<9;k++)
{
printf("%d\n",a[k]);
}
}
算法时间复杂度:O(n²)
算法空间复杂度:O(1)
算法稳定性:稳定
算法稳定性概念:假设在数列中存在a[i]=a[j],若在排序之前,a[i]在a[j]前面;并且排序之后,a[i]仍然在a[j]前面。则这个排序算法是稳定的