氣泡排序
氣泡排序(bubble sort)是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有元素再需要交換,也就是說該數列已經排序完成。氣泡排序規則這個演算法的名字由來是因為越小的元素會經由交換像氣泡一樣慢慢「浮」到數列的頂端。
1.每次比較相鄰的元素,如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。經過一輪排序後,最後的元素應該會是最大的數。
2.針對所有的元素重複以上的步驟,除了最後乙個。
3.持續每輪對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較,也就是已經是按照從小到大的順序排列了。
#includeusing namespace std;
int main()
}for(int i=1;i<=n;i++)
cout《例題:
第k小的數
給定乙個長度為 n ( 1 <= n <= 10000 ) 的序列,問該序列中第 k ( 1 <= w <= n ) 小的元素是多少?
【輸入描述】第一行:兩個整數 n和 k。接下來一行 n 個數,表示這個序列。
【輸出描述】輸出僅一行,表示第k小的元素。
【樣例輸入】5 3
18 23 4 5 12
【樣例輸出】12
參考**
#include using namespace std;
int s[10001];
int main()
} }cout << s[k];
return 0;
}
氣泡排序優化
剛才對於序列的排序過程中,我們不難發現,第二輪排序進行完之後,整個序列已經是有序的了,也就是說第二輪排序結束就可以不用接著進行接下來的比較了。
因此我們可以對剛才的程式進行優化,那麼什麼時候就可以結束排序過程呢?根據觀察,我們發現當某輪排序過程中沒有交換的發生,那麼就說明序列已經有序,無需再次比較了。
優化**
#includeusing namespace std;
int main()}}
for(int i=1;i<=n;i++) cout
}
排序演算法之氣泡排序
參考 氣泡排序演算法的運作如下 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。若...
排序演算法之氣泡排序
對於大多數學計算機的人來說,氣泡排序應該都是接觸的第一種排序方式,氣泡排序的排序思想是比較簡單的,它的演算法的是 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了...
排序演算法之氣泡排序
氣泡排序 bubble sort 是一種電腦科學領域的較簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越大的元素會經由交換慢慢 浮 到數列的頂端,...