算法描述:
依次比较相邻的两个数字,小的放在前面,大的放在后面,先比较 1 和 2,小数在前,大数在后。比较 2 和 3,小数在前,大数在后,如此继续,直到最后两个数比较,则最大的数在最后一位,在下一次排序时,不用把最后一位和倒数第二位比较。重复以上过程,直到最终完成排序。
算法示例
给49 38 65 97 76 13 26 55排序
时间复杂度
时间复杂度:O(n^2)
空间复杂度:O(1)
稳定
算法实现
#include <stdio.h>
void BubbleSort(int *arr,int len)//O(n^2),O(1),稳定
{
int tmp=0;
int i;
int j;
for(i=1;i<len;i++)
{
for(j=0;j<len-i;j++)
{
if(arr[j]>arr[j+1])
{
tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
}
}
}
void show(int *arr,int len)
{
for(int i=0;i<10;i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
int main()
{
int arr[]={2,9,12,3,4,25,14,13,16,6};
BubbleSort(arr,sizeof(arr)/sizeof(arr[0]));
show(arr,sizeof(arr)/sizeof(arr[0]));
return 0;
}