c++基礎十四(氣泡排序)
阿新 • • 發佈:2021-01-27
氣泡排序
基本思路:對於一組要排序的元素列,依次比較相鄰的兩個數,將比較小的數放在前面,比較大的數放在後面,如此繼續,直到比較到最後的兩個數,將小數放在前面,大數放在後面,重複步驟,直至全部排序完成。
例子:陣列Num[5]={9,6,7,3,1},要求將Num內的元素進行氣泡排序並打印出來。
分析:
過程:
Num[5]第一次進行一次整體的比較後,篩選出了9這個最大值後,後續的比較中,9不會進行比較.
Num[5]根據上次同樣的步驟進行比較後,篩選出7後,後續的比較中,7不會進行比較.
Num[5]根據上次同樣的步驟進行比較後,篩選出6後,後續的比較中,6不會進行比較.
當最後兩個數完成比較後,本次排序結束。
過程總結:
每進行一次迴圈輪數,就會篩選出一個最大值,並在進行下一次篩選時,對上一次篩選出來的最大值進行排除,所以排序的總輪數=元素個數-1,比較次數=元素個數-迴圈的輪數-1.
程式碼思路:需要兩個迴圈和數的交換程式碼來實現,外迴圈是用來實現排序輪數,內迴圈用來實現比較次數,交換程式碼的功能是用來實現比較兩個數,並且將小數放前,大數放後。
程式碼:
#include <iostream> using namespace std; int main () { int num[5]={9,6,7,3,1}; for(int i=
0;i<5-1;i++) //排序輪數 { for(int j=0;j<5-i-1;j++) //比較次數 { if(num[j]>num[j+1]) //數的交換程式碼 { int temp; temp=num[j]; num[j]=num[j+1]; num[j+1]=temp; } } } for (int k=0;k<5;k++) cout<<num[k]<<" "; system ("pause"); return 0; }
執行介面:
總結:
氣泡排序的難點有兩個,第一是如何對兩個數的大小進行判斷並是否進行互動;第二是外、內層的迴圈實現的規律。