冒泡排序:主要用于一个无序数组中两相邻元素作比较,随之看大小进行交换,从而使一个无序数组转变成有序数组。
eg:写一个函数 ,将{2,4,6,7,83,3,1,6,87,56,}进行升序排序。
void bubble_sort(int arr[], int sz)
{
int i=0;
for(i=0;i<sz-1;i++)//一共循环sz-1次
{
int j=0;
for(j=0;j<sz-1-i;j++)//每一趟冒泡排序
{
if(arr[j]>arr[j+1])
{
int tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
}
}
}
}
int main()
{
int i=0;
int arr[]={2,4,6,7,83,3,1,6,87,56};
int sz=sizeof(arr)/sizeof(arr[0]);//数组元素个数
bubble_sort(arr,sz);//自定义函数
for(i=0;i<sz;i++)
printf("%d ",arr[i]);
}
2, 4, 6, 7, 83, 3, 1, 6, 87, 56
2和4作比较:2<4 不交换
4和6作比较:4<6不交换
6和7作比较:6<7不交换
7和83作比较,7<83不交换
83和3作比较,83>3 二者交换位置
...
87和56作比较,87>56二者做交换
一次冒泡程序共执行n-1次,一共n个,则一共一共执行n*(n-1)/2次
时间复杂程度为O(n²)。