冒泡排序算法的运作如下:
1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
代码实现:
#include <stdio.h>
void BubSort(int a[],int size)
{
bool exchanged;//交换标识
for(int i = 0; i < size; i++)
{
exchanged = false; //初始未交换
for(int j = 0; j < size - 1 - i;j++)
{
if(a[j] > a[j+1])
{
int temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
exchanged = true;//交换
}
}
if(!exchanged)//整趟未交换则表明已经排好序,直接退出
{
return;
}
}
}
int main()
{
int a[8] = {95, 45, 15, 78, 84, 51, 24, 12};
BubSort(a,8);
for(int i = 0; i < 8; i++)
{
printf("%d ",a[i]);
}
printf(" ");
return 0;
}