氣泡排序及優化

2021-10-10 08:40:29 字數 1324 閱讀 9503

氣泡排序:每次將最大(最小)的數放到陣列的最後一位,最後得到有序的序列

#include

#include

#include

using

namespace std;

intmain()

}}for(

int i=

0;i)printf

("%d "

,a[i]);

printf

("\n");

return0;

}

上面的**是全裸的模板,現在考慮有沒有優化的可能。

1.外層迴圈優化:當某一趟沒有進行交換的話則序列已經有序

#include

#include

#include

using

namespace std;

intmain()

}if(flag==0)

break;}

for(

int i=

0;i)printf

("%d "

,a[i]);

printf

("\n");

return0;

}

#include

#include

#include

using

namespace std;

intmain()

}if(flag==0)

break

; k=m;

}for

(int i=

0;i)printf

("%d "

,a[i]);

printf

("\n");

return0;

}

3.雙向優化:正向找最大值,反向找最小值

#include

#include

#include

using

namespace std;

intmain()

}if(flag==0)

break

; k=m;

for(j=k;j>z;j--)}

z++;if

(flag==0)

break;}

for(

int i=

0;i)printf

("%d "

,a[i]);

printf

("\n");

return0;

}

氣泡排序及優化

氣泡排序的基本思路是 每次將相鄰兩個數比較,將小的調到前頭 本例按照從小到大排序 按此規律如果有n個數,則要進行n 1趟比較。在第1趟比較中要進行n 1次兩兩比較,在第 j 趟比較中要進行 n j 次兩兩比較。實現如下 include define n 10 int main for i 0 i n...

氣泡排序及優化

只考慮演算法的實現 public static void version1 int array 如果陣列的某一部分本身就是有序的,能顯著減少迴圈的趟數 public static void version2 int array if flag break 分析 我們假設在進行某趟排序時已經有序了,以...

氣泡排序及優化

目錄 一 思路 二 普通寫法 三 模板寫法 四 優化一 五 優化二 六 優化三 氣泡排序 無序區,有序區 從無序區通過交換找出最大元素放到有序區前端。1 比較相鄰元素,如果第乙個比第二個大,交換他們。2 對每一對相鄰元素做同樣操作,從開始第一對倒最後一對。這步做完後,最後的元素是最大的。3 針對所有...