冒泡排序 優(yōu)化版

//冒泡排序
void BubbleSort1(int* arr, size_t size)
{
assert(arr);
int i = 0, j = 0;

for (i = 0; i < size - 1; i++)//一共要排序size-1次
{
    for (j = 0; j < size - 1 - i; j++)//選出該趟排序的最大值往后移動
    {
        if (arr[j] > arr[j + 1])
        {
            int tmp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = tmp;
        }
    }
}

}

//冒泡排序優(yōu)化1
void BubbleSort2(int* arr, size_t size)
{
assert(arr);
int i = 0, j = 0;

for (i = 0; i < size - 1; i++)//一共要排序size-1次
{
    //每次遍歷標(biāo)志位都要先置為0,才能判斷后面的元素是否發(fā)生了交換
    int flag = 0;

    for (j = 0; j < size - 1 - i; j++)//選出該趟排序的最大值往后移動
    {
        if (arr[j] > arr[j + 1])
        {
            int tmp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = tmp;
            flag = 1;//只要有發(fā)生了交換,flag就置為1
        }
    }

    //判斷標(biāo)志位是否為0,如果為0,說明后面的元素已經(jīng)有序,就直接return
    if (flag == 0)
    {
        return;
    }
}

}

//冒泡排序優(yōu)化2
void BubbleSort3(int* arr, size_t size)
{
assert(arr);
int i = 0, j = 0;
int k = size - 1,pos = 0;//pos變量用來標(biāo)記循環(huán)里最后一次交換的位置

for (i = 0; i < size - 1; i++)//一共要排序size-1次
{
    //每次遍歷標(biāo)志位都要先置為0,才能判斷后面的元素是否發(fā)生了交換
    int flag = 0;

    for (j = 0; j <k; j++)//選出該趟排序的最大值往后移動
    {
        if (arr[j] > arr[j + 1])
        {
            int tmp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = tmp;
            flag = 1;//只要有發(fā)生了交換,flag就置為1
            pos = j;//循環(huán)里最后一次交換的位置 j賦給pos
        }
    }

    k = pos;
    //判斷標(biāo)志位是否為0,如果為0,說明后面的元素已經(jīng)有序,就直接return
    if (flag == 0)
    {
        return;
    }
}

}

原文地址

浪客行1213的簡書

xhh
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 算法之冒泡排序 一:基本概念冒泡排序(Bubble Sort),又被稱為氣泡排序或泡沫排序;它是一種比較簡單的排序...
    墨小飛閱讀 480評論 0 2
  • 如果遇到相等的值不進(jìn)行交換,那這種冒泡排序方式是穩(wěn)定的排序方式。 原理:以升序?yàn)槔容^兩個(gè)相鄰的元素,將值大的元...
    GoodTekken閱讀 562評論 0 5
  • 冒泡排序(Bubble Sort,臺灣譯為:泡沫排序或氣泡排序)是一種簡單的排序算法。它重復(fù)地走訪過要排序的數(shù)列,...
    Spring框架9420閱讀 1,050評論 0 0
  • 冒泡排序(Bubble Sort)算法是所有排序算法中最簡單、最基本的一種。冒泡排序算法的思路就是交換排序,通過相...
    敲代碼的蝌蚪閱讀 507評論 0 1
  • 我是黑夜里大雨紛飛的人啊 1 “又到一年六月,有人笑有人哭,有人歡樂有人憂愁,有人驚喜有人失落,有的覺得收獲滿滿有...
    陌忘宇閱讀 8,820評論 28 54

友情鏈接更多精彩內(nèi)容