起泡排序

来源:互联网 发布:数据透视日期按月汇总 编辑:程序博客网 时间:2024/04/26 23:21

起泡排序算法思路

有序概念

在由一组整数组成的序列A[0, n - 1]中,满足A[i - 1] < A[i]的相邻元素称作顺序的;否则是逆序的。不难看出,有序序列中每一对相邻元素都是顺序的,亦即,对任意1 < i < n都有A[i - 1] < A[i];反之,所有相邻元素均顺序的序列,也必然整体有序。

思路

由有序序列的上述特征,我们可以通过不断改善局部的有序性实现整体的有序:从前向后依次检查每一对相邻元素,一旦发现逆序即交换二者的位置。对于长度为n的序列,共需做n - 1次比较和不超过n - 1次交换,这一过程称作一趟扫描交换。每一趟扫描都至少会有一个元素就位。

排序过程中,所有元素朝各自最终位置亦步亦趋的移动过程,犹如气泡在水中的上下沉浮,起泡排序(bubble sort)算法也因此得名。

起泡排序实现

void bubble_sort(int data[], int n){    int sorted = 0; // false    int i;    while (!sorted)    {        sorted = 1;        for (i = 1; i < n; i++)        {            if (data[i-1] > data[i])            {                int temp = data[i];                data[i] = data[i-1];                data[i-1] = temp;                sorted = 0;            }        n--;     }}
0 0
原创粉丝点击