例題:fjutoj 1842
氣泡排序 (bubble sort)
原理是取相鄰兩個數進行大小比較,判斷是否交換。
以從小到大排序為例,氣泡排序就像氣泡一樣,最小的數慢慢浮上來,最大的數慢慢沉下去。那麼完整從頭到尾做一次之後最後一位就是原序列中最大的數字了。然後只需要對1~(n-1)個數字進行排序,完成後倒數第二個數字也為原序列的1~n-1元素中最大的值。如此重複,進行n-1次一定能完成排序。參考**:
1 #include 2void bubblesort(int *, int);3
intmain()
4, i;
6int s = sizeof(a) / sizeof(int
);7 puts("
before sort:");
8for(i = 0; i < s; i++)
9 printf("
%d "
, a[i]);
10bubblesort(a, s);
11 puts("
\nafter sort:");
12for(i = 0; i < s; i++)
13 printf("
%d "
, a[i]);
14return0;
15}16void bubblesort(int *a, int
s) // a為待排序陣列 s為陣列中需排序長度
1729}30
}31 }
優化:如果一整趟下來都沒有一次交換,那麼確定該序列已經滿足單調,直接跳出迴圈可以省時。
1void bubblesort(int *a, int
s) // a為待排序陣列 s為陣列中需排序長度217
}18if(swap_flag == 0) break;19
}20 }
選擇排序 (select sort)
以從小到大排序為例。原理是在序列中挑乙個最小的值,然後與序列中的第乙個交換。那麼,第乙個就是整個序列中最小的數字。再對從第二個數字開始的序列做這個操作,得到剩餘序列中最小的數字所在位置,與原序列第二個數交換,以此類推做n-1完成排序。參考**:
void selectsort(int *a, ints) // a為待排序陣列 s為陣列中需排序長度
if(min_num_index !=i)
}}
氣泡排序法 選擇排序法
相鄰兩個數進行比較 如果前者比後者大 就把前者和後者互換 比如十個數 經過九次比較 就可以得到乙個最大的數字於排列的最末端 再經過八次比較 可以得到乙個第二大的數 依次類推 即最大的數一次一次冒泡上來。include int main printf n 資料排序 for i 0 i 9 i 列印資料...
選擇排序法和氣泡排序法
例題 自定義函式,從鍵盤輸入n個數,對它進行從小到大的排序,要求從主函式輸出排序的結果。方法一 氣泡排序法 include define n 10 using namespace std int main void bubble sort int a 氣泡排序法分析 先從第乙個元素開始,各位相鄰元素...
選擇排序法和氣泡排序法
思想 從待排序元素中的第乙個開始,每乙個依次與後面的所有元素作比較,再交換值。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 優化 我們不能減少比較次數,但...