例題:自定義函式,從鍵盤輸入n個數,對它進行從小到大的排序,要求從主函式輸出排序的結果。
方法一:氣泡排序法
#include#define n 10
using namespace std;
int main()
void bubble_sort( int a)
}}
氣泡排序法分析:
先從第乙個元素開始,各位相鄰元素經過一一比較,最後把最大或者最小的元素排在最後一位。
在經過第一輪比較後,此時已將最大的元素放在最後一位(對於本題,按從小到大的順序排序),此時各位相鄰元素比較的次數為(n-1)。
再進行第二輪比較,由於最大的元素已經確定放在最後一位,所以無須再進行涉及最後一位元素的元素比較,此時實際比較的次數為(n-1)-1。
以此類推,可知最終比較的輪數為n-1,每輪比較的次數為(n-1)-i,其中i為第i次輪數比較,但i從0開始。
方法二:選擇排序法
#include#define n 10
using namespace std;
int main()
void select_sort(int a)
選擇排序法分析:
先設第乙個元素為最大者,與它後幾位元素進行比較,(按本題從小到大排序)如果有大於第乙個元素的元素,則將它們進行相互替換,最後已將最小的元素放在第一位,這一點與氣泡排序法不同,氣泡排序法是將最大的元素放在未尾。
在經過第一輪比較後,已將最小的元素放在第一位,此時第一位元素與其後幾位元素比較的次數為n-1次。
再進行第二輪比較,設第二位元素為次小元素,如果有大於它的元素,則將它們進行相互替換,由於最小的元素已經確定放在第一位,所以無須再進行涉及第一位元素的比較,此時比較的次數為n-1-1。
以此類推,可知最終比較的輪數為n-1次,每輪比較的次數為n-1-i次,i也是從0開始的。
選擇排序法和氣泡排序法
思想 從待排序元素中的第乙個開始,每乙個依次與後面的所有元素作比較,再交換值。include intmain int i,j,t for i 0 i 10 i 從第乙個開始 for i 0 i 10 i printf arr d d n i,arr i return0 優化 我們不能減少比較次數,但...
選擇排序法和氣泡排序法
1.選擇排序法 以從小到大排序為例 演算法思想 a.在未排序序列中找到最小 大 元素,存放到排序序列的起始位置 b.從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾 c.以此類推,直到所有元素均排序完畢 選擇排序法 演示 用c語言實現選擇排序法 include intmain vo...
氣泡排序法 選擇排序法
相鄰兩個數進行比較 如果前者比後者大 就把前者和後者互換 比如十個數 經過九次比較 就可以得到乙個最大的數字於排列的最末端 再經過八次比較 可以得到乙個第二大的數 依次類推 即最大的數一次一次冒泡上來。include int main printf n 資料排序 for i 0 i 9 i 列印資料...