最近在看关于排序算法的内容,所以今天就浅谈一下冒泡算法
bubble sort 的原理是将相邻的两个元素相比较,之后按照从大到小或者是从小到大的排序
第一轮过后就能在最后找到最大值或者是最小值,
紧接着就第二轮比较次大值或次小值.
我们举一个例子比如说有一个长度为n的数组
第一轮(外循环i = 0);(内循环从j = 0,开始a[j]与a[j+1]比较n - 1 - i次) 在最后找到了最大值,下一轮不比较最大值
第二轮(外循环) i = 1);(内循环从j = 0,开始a[j]与a[j+1]比较n - 1 - i次)在最后找到了次大值
....
第n-1轮(外循环i = n-2);(内循环从j = 0,开始a[j]与a[j+1]比较n - 1 - i次)
(我的理解n个比较外循环就要比较n-1次,内循环中要比较n-1-i次)
代码如下
#include <stdio.h>
void bubble_sort (int a[], int n);
int main (void)
{
int a[6] = {1, 4, 6, 3, 7, 9};
int i;
bubble_sort (a, 6);
for (i = 0; i < 6; i++)
printf ("%d", a[i]);
printf ("\n");
return 0;
}
void bubble_sort (int a[], int n)
{
int i, j, temp;
for (i = 0; i < n -1; i++)
{
for (j = 0; j < n - 1 -i; j++)
if(a[j] >= a[j + 1]) //从小到大排序
{
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}