思路:
从前往后,比较每一对相邻的两个元素,如果逆序就交换顺序,第一次比较后最大元素放在最后,
第二次比较后第二大元素放在倒数第二位置,
重复上面步骤N-1次,直到所有元素已是正序。
时间复杂度:
平均, ; 最好, ;最坏,
程序:
void bubble_sort(int array[],int array_size)
{
int i,j,temp;
for(i=0;i<array_size-1;i++)
{
bool flag=true;
for(j=0;j<array_size-1-i;j++)
{
if(array[j]>array[j+1])
{
temp=array[j];
array[j]=array[j+1];
array[j+1]=temp;
flag=false;
}
}
if(flag)
break;
}
}
#include <stdio.h>
#include <stdbool.h>
int main()
{
int i;
int array[]={100,96,88,75,63,52,41,36,28,19,6,0,-19,-105};
int array_size=sizeof(array)/sizeof(int);
bubble_sort(array,array_size);
printf("Sorted array:\n");
for(i=0;i<array_size;i++)
printf(" %d, ",array[i]);
printf("\n");
return 0;
}
参考:
https://www.runoob.com/w3cnote/ten-sorting-algorithm.html
https://www.runoob.com/w3cnote/ten-sorting-algorithm.html