關於排序,氣泡排序和簡單選擇排序應該是最簡單的排序了
排序過程:從小到大排序
比較第乙個與第二個數,若a[0]>a[1], 則交換; 然後比較第二個數和第三個數; 以此類推, 直到第n-1個數和第n 個數比較為止 ( 第一趟氣泡排序結束 ,陣列中最大的數被排在了最後 ) 。
對前n-1個個數進行氣泡排序,結果是次大的數排在第n-1個元素位置。
重複上述步驟,一共經過n-1次氣泡排序後,排序完成
這個演算法的名字由來是因為越大的元素會經由交換慢慢「浮」到數列的頂端,故名氣泡排序。
排序過程:從小到大排序
1. 有乙個長度為n的陣列,先經過n-1次比較,找出n個數中最小的數將它與陣列的第乙個元素交換——-第一次選擇排序結束,並且將最小的數安放在第乙個陣列元素的位置。
2. 在通過n-2次比較,從剩餘的n-1個數中找出最小的數將它與陣列的第二個元素交換——–第二次排序結束。
3. 重複上述步驟,經過n-1次排序後,排序完成。
例:一直乙個陣列 a [5]=, 請將它從小到大排序。
程式
#include
int main(int argc, const
char *argv)
; int i,j;
int temp;
for(i = 0;i < 4;i ++)}}
for(i = 0;i < 5;i ++)
printf("\n");
return
0;}
解析:
開始:3,2,5,1,4
第一次:2,3,1,4,5
第二次:2,1,3,4,5
第三次:1,2,3,4,5
第四次:沒有交換
程式:
#include
int main(int argc, const char *argv)
; int min,index,temp;
int i,j;
for(i = 0;i < 4;i ++)
}temp = a[i];
a[i] = a[index];
a[index] = temp;
}for(i = 0;i < 5;i ++)
printf("\n");
return
0;}
解析:
開始:3,1,5,2,4
第一次:1,3,5,2,4
第二次:1,2,3,5,4
第三次:沒有交換
第四次:1,2,3,4,5
氣泡排序and簡單選擇排序
在第一趟排序中,從第乙個元素開始,掃瞄整個待排序元素序列,若相鄰的兩個元素逆序,則交換位置。直到最後乙個元素,此時,最後乙個元素必為最大的元素。第二趟排序,依然從第乙個元素開始掃瞄直到倒數第二個元素。第三趟排序,從第乙個掃瞄到倒數第三個。直到只剩乙個元素需要掃瞄。程式如下 includeint ma...
排序之路 氣泡排序和簡單選擇排序
以前上大學,沒有好好跟老師一起學習教材裡晦澀難懂的那些演算法。如果上天在給我一次機會,我一定。屁話,言歸正傳。氣泡排序 氣泡排序,這個名字就能想象到開水沸騰的場景,泡泡從下到上冒起,實則該排序也是有這個 冒泡 的過程。我們來看乙個陣列 arr 2,0,1,9,12,31,8,30 利用氣泡排序實現從...
氣泡排序和簡單選擇排序實現
氣泡排序演算法的運作如下 從後往前 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較...