冒泡排序(Bubble Sort),算的是一种比较简单的排序算法。我们知道2个数要1轮就可以得到最大数,n个数要比较n-1轮。每一轮找到一个最大的值将其放到数组尾部。较小的数好像水中的气泡逐轮向上漂浮,每一轮有一个“最大”的石头沉到水底,n-1轮后,就得到递增数组。总的时间复杂度为O(n^2)。
源代码如下:
//
// 冒泡排序
//
// Created by GPH on 14-5-3.
// Copyright (c) 2014年 GPH. All rights reserved.
//
#include <stdio.h>
#include <stdlib.h>
void bubbleSort(int a[],int length)
{
int tmp = 0;
for (int i = 0; i < length - 1; i++)
{
//每次将一个最大值放到尾部。所以后面不用再考虑
for (int j = 0; j < length - i - 1; j++)
{
//前面大于后面就交换
if (a[j] > a[j+1])
{
tmp = a[j];
a[j] = a[j+1];
a[j+1] = tmp;
}
}
for (int i = 0; i < 10; i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
}
int main()
{
int a[10] = {3,2,5,1,6,8,7,9,0,4};
bubbleSort(a, sizeof(a)/sizeof(a[0]));
for (int i = 0; i < 10; i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}