冒泡排序算法的关键是每次循环把最大的数放到最后一个位置,算法的时间复杂度为o(n^2).在下面的算法中,
用到了一个变量b_done,它用来监督一趟比较下来,有没有发生交换,如果没有产生交换,说明原始的数据
是已经排好序的,j就不用再增加了,整个算法结束。
#include "stdafx.h"
void bubble_sort(int list[], int n)
{
int i;
int j;
int tmp;
bool b_done;
b_done = false;
j = 1;
while ((j<n) && (!b_done))
{
b_done = true;
for (i=0; i<n-j; i++)
{
if (list[i] > list[i+1])
{
b_done = false;
tmp = list[i];
list[i] = list[i+1];
list[i+1] = tmp;
}
}
j++;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int test [] = {2,3,6,5,9,8,7,1,4};
bubble_sort(test, 9);
for (int i=0; i<9; i++)
{
printf("%d", test[i]);
}
return 0;
}