/**
* 依次比较相邻的两个个数,将小数放在前面,大数放在后面。即在第一
* 趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2
* 个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两
* 个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最
* 后。若一趟下来始终满足小数在前,则排序结束,否则记录不满足小数在
* 前的数组最大位置,置为待排数组长度,然后重复上述过程,直到结束,冒
* 泡排序的时间杂度为O(n) ~ O(n ^2)
*/
#include <stdio.h>
void bubble_sort(int array[], int n)
{
int tmp, tlen;
while(n)
{
tlen = 0;
for(int i = 1; i < n; ++i)
{
if(array[i - 1] > array[i])
{
tlen = i;
// 交换元素(swap)
tmp = array[i];
array[i] = array[i - 1];
array[i - 1] = tmp;
}
}
// 刷新待排数组长度
n = tlen;
}
}
main()
{
int array[] = {-1, -1, -100, 100, 0, 10};
bubble_sort(array, 6);
for(int i = 0; i < 6; ++i)
printf("%d ", array[i]);
}
运行结果: -100 -1 -1 0 10 100
冒泡排序
最新推荐文章于 2023-06-06 09:14:05 发布