什么是冒泡排序?冒泡排序是一种最基础的交换排序。
大家一定喝过汽水,汽水中常常有许多小小的气泡,哔啦哗啦飘到上面来。这是因为组成气泡的二氧化碳比水要轻,所以小气泡可以一点一点向上浮动。
而我们的冒泡排序之所以叫冒泡排序,正是因为这种排序算法的每一个元素都可以像小气泡一样,根据自身的大小,一点一点向着数组的一侧移动。
具体如何移动呢?让我们来看个例子(从小到大的顺序排列)
代码实现:
#include<stdio.h>
void BubbleSort(int arry[],int len)
{
int temp=0;
for(int i=0;i<len;i++)
{
for(int j=0;j<len-i-1;j++ )
{
if(arry[j]>arry[j+1])
{
temp=arry[j];
arry[j]=arry[j+1];
arry[j+1]=temp;
}
}
}
}
int main()
{
int arry[]={5,8,6,3,9,2,1,7};
int len=sizeof(arry)/sizeof(arry[0]);
BubbleSort(arry,len);
printf("冒泡排序结果为: ");
for(int i=0;i<len;i++)
{
printf("%d ",arry[i]);
}
return 0;
}
代码非常简单,使用双循环来进行排序,外部循环控制所有的回合,内部循环代表每一轮的冒泡处理,先进行元素比较,再进行元素交换。
冒泡排序是稳定排序,由于该排序算法的每一轮要遍历所有元素,轮转的次数和元素数量相当,所以时间复杂度为O(N^2)。