Skip to content

【数据结构与算法】冒泡排序 #19

@buckrudy

Description

@buckrudy

冒泡排序

冒泡排序是一种简单的排序算法。经过若干次的遍历要排序的数列,每次都是从前面往后依次比较两个数的大小,如果前者比后者到就交换位置。这样经过一次遍历后,最大的数就排到了最后。这样依次遍历若干遍就把数列排好了。

冒泡排序图解

下图是对数列{6, 2, 5, 3},第一趟排序的过程,结束后最大的数就排好了。接下来用同样的方法排序剩余的数。

image

冒泡排序代码实现

按升序排序的算法实现

// a 数组
// len 数组元素个数
void bubbleSort(int a[], int len)
{
    int i, j;
    int temp;
    int flag;

    for (i=0; i<len-1; i++) {     // 进行 len - 1 趟排列
        flag = 0;
        for (j=0; j<len-1-i; j++) {
            if (a[j] > a[j+1]) {
                temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
                flag = 1;                // 标记发送过交换
            }
        }
        if (flag == 0)      // 如果没有发送过交换,说明数据已经是有序的
            break;
    }
}

时间复杂度为 O(n²)。冒泡排序的效率比较低,不适合对大量数据的排序。

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions