C語言--冒泡排序

直接看代碼吧

#include <stdio.h>

void BubbleSort(int* R, int len)
{
    bool exchange;  // 交換標誌
    int temp;
    for (int i = 0; i < len; i++) // 最多做n-1次排序
    {
        exchange = false;
        for (int j = len - 2; j >= i; j--)
            if (R[j + 1] < R[j])
            {
                temp = R[j + 1];
                R[j + 1] = R[j];
                R[j] = temp;
                exchange = true;
            }
        if (!exchange)   // 如果沒有發生交換,提前終止算法
            return;
    }
}

int main()
{

    int aa[10];

    printf("\nPlease input 10 num:\n");
    for (int i = 0; i < 10; i++)
    {
        scanf("%d", &aa[i]);
    }

    BubbleSort(aa, 10);

    for (int i = 0; i < 10; i++)
        printf("%d ", aa[i]);
    printf("\n");

    return 0;
}

加入exchange的作用:
在每趟排序開始前,先將其置爲false。
若排序過程中發生了交換,則將其置爲true。
每趟排序結束時檢查exchange,若未發生過交換則終止算法,不再進行下一趟排序

整理自《程序員面試寶典》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章