欢迎访问宙启技术站
智能推送

简单排序算法--冒泡排序的实现函数

发布时间:2023-06-26 13:34:07

冒泡排序是一种简单的排序算法,它的基本思想就是反复地交换相邻两个元素,直到把整个序列排好序。在实际应用中,它的使用范围很广,由于它的代码简单易懂,操作也非常简单,在很多场合都被使用到。本文主要介绍冒泡排序的实现函数。

1.冒泡排序实现函数

下面是冒泡排序的实现函数:

void bubbleSort(int a[], int len) {
    int i, j, tmp;
    for (i = 0; i < len - 1; i++) {
        for (j = 0; j < len - i - 1; j++) {
            if (a[j] > a[j + 1]) {
                // 交换相邻两个元素
                tmp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = tmp;
            }
        }
    }
}

在这个函数中,我们使用了两个循环嵌套来实现冒泡排序。外层循环控制排序轮数,内层循环控制每一轮中的比较和交换操作。

在内层循环中,我们首先判断相邻两个元素的大小关系,如果前面的元素大于后面的元素,就交换它们的位置。这样一轮比较下来,最大的元素就被放到了最后面。然后我们就可以开始下一轮比较了。

在外层循环中,我们要比较 len - 1 次,因为最后一个元素已经排好序了,不需要再进行比较和交换。而在内层循环中,我们要比较 len - i - 1 次,因为已经排好序的元素不需要再进行比较和交换,可以节省一部分时间。

2.示例代码

下面是一个示例代码,供大家参考:

#include <stdio.h>

void bubbleSort(int a[], int len);

int main() {
    int a[] = {3, 2, 8, 5, 0, 7, 4, 1, 6, 9};
    int len = sizeof(a) / sizeof(int);
    bubbleSort(a, len);
    int i;
    for (i = 0; i < len; i++) {
        printf("%d ", a[i]);
    }
    printf("
");
    return 0;
}

void bubbleSort(int a[], int len) {
    int i, j, tmp;
    for (i = 0; i < len - 1; i++) {
        for (j = 0; j < len - i - 1; j++) {
            if (a[j] > a[j + 1]) {
                // 交换相邻两个元素
                tmp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = tmp;
            }
        }
    }
}

在这个示例代码中,我们首先定义了一个数组 a,它包含了 10 个整数。然后我们调用 bubbleSort 函数对数组进行排序,最后使用循环输出排序后的结果。

3.总结

冒泡排序是一种简单的排序算法,它的代码非常简单,操作也很简单,适用于各种场合。在实际使用中,我们要注意内外两层循环的控制次数,以及相邻两个元素的比较和交换操作。只要我们熟练掌握了这个算法的实现,就可以在实际项目中灵活运用。