C語(yǔ)言冒泡升序排序怎么實(shí)現(xiàn)

小億
84
2024-01-03 11:38:52

在C語(yǔ)言中,可以使用冒泡排序算法來對(duì)數(shù)組進(jìn)行升序排序。冒泡排序的基本思想是重復(fù)地交換相鄰的元素,使較大的元素逐漸向右移動(dòng)到數(shù)組的末尾。

以下是使用冒泡排序算法實(shí)現(xiàn)升序排序的示例代碼:

#include <stdio.h>

void bubbleSort(int arr[], int n) {

    int i, j;

    for (i = 0; i < n-1; i++) {

        // 每次遍歷都將最大的元素移動(dòng)到右端

        for (j = 0; j < n-i-1; j++) {

            if (arr[j] > arr[j+1]) {

                // 交換相鄰的元素

                int temp = arr[j];

                arr[j] = arr[j+1];

                arr[j+1] = temp;

            }

        }

    }

}

int main() {

    int arr[] = {5, 2, 8, 12, 3};

    int n = sizeof(arr) / sizeof(arr[0]);

    printf("原始數(shù)組: ");

    for (int i = 0; i < n; i++) {

        printf("%d ", arr[i]);

    }

    bubbleSort(arr, n);

    printf("\n排序后的數(shù)組: ");

    for (int i = 0; i < n; i++) {

        printf("%d ", arr[i]);

    }

    return 0;

}

輸出結(jié)果:

原始數(shù)組: 5 2 8 12 3

排序后的數(shù)組: 2 3 5 8 12

在上述示例代碼中,`bubbleSort()`函數(shù)接受一個(gè)整數(shù)數(shù)組和數(shù)組的大小作為參數(shù)。它使用兩個(gè)嵌套的循環(huán)來遍歷數(shù)組,并將較大的元素向右移動(dòng)。最后,`main()`函數(shù)通過調(diào)用`bubbleSort()`函數(shù)對(duì)數(shù)組進(jìn)行排序,并輸出排序后的結(jié)果。

請(qǐng)注意,在實(shí)際應(yīng)用中,冒泡排序算法可能不是最優(yōu)的選擇,因?yàn)樗臅r(shí)間復(fù)雜度為O(n^2),在處理大型數(shù)據(jù)集時(shí)效率較低。更高效的排序算法如快速排序或歸并排序可以用于替代冒泡排序。

0