將學生的成績從高到低排序,這裡學生資訊用結構體表達。void fun( strec a[ ] )就是採用氣泡排序法。
氣泡排序:兩個迴圈+乙個交換。
#include
#define n 16
typedef struct
strec;
void fun( strec a[ ] ) //bubble sort
,,,,
,,,,
,,,,
,,,};
int i;file *out ;
fun( s );
printf(「the data after sorted :\n」);
for(i=0;i0 )printf("\n");
printf("%s %4d 「,s[i].num,s[i].s);
}printf(」\n");
out = fopen(「out.dat」,「w」) ;
for(i=0;i0 && i) fprintf(out, 「\n」);
fprintf(out, 「%4d 「,s[i].s);
}fprintf(out,」\n」);
fclose(out) ;
}舉例說明:要排序陣列:int arr=;
第一輪排序:
第一次排序:6和3比較,6大於3,交換位置: 3 6 8 2 9 1
第二次排序:6和8比較,6小於8,不交換位置:3 6 8 2 9 1
第三次排序:8和2比較,8大於2,交換位置: 3 6 2 8 9 1
第四次排序:8和9比較,8小於9,不交換位置:3 6 2 8 9 1
第五次排序:9和1比較:9大於1,交換位置: 3 6 2 8 1 9
第一趟總共進行了5次比較, 排序結果: 3 6 2 8 1 9
這只是完成了第一輪中的各個相鄰兩數之間的『比較+交換』。下一輪繼續。對n個數要進行***n-1***輪,每輪比較***n-1***次。
氣泡排序 排序 氣泡排序
既然寫了計組思來想去便打算把資料結構也寫下來,寫的時候總是發現看的時候無法發現的問題,受益良多。交換排序的基本思想 exchange until sorted 順序,分支,迴圈 注意偽 的熟悉 下面介紹兩種交換演算法 首先進行聯想,用乙個圖進行輔助聯想 水冒泡過程 頂部是陣列的begin,底部理解為...
氣泡排序 氣泡排序法
冒泡法是一種簡單的排序方法,它的實現非常簡單。首先對n個專案進行掃瞄,比較相領兩個專案的大小,若發現違背大小次序則進行互換,由此可以使n個專案中的最大者換到最後。然後對剩下的未排序好的專案再進行掃瞄,使它們的最大者換到表的最後。以此類推,直到將表全部排序好為止。這種排序方法,每遍掃瞄以後,都縮短了待...
選擇排序,氣泡排序,雙向氣泡排序
氣泡排序和選擇排序是最基本的排序方式,要掌握。氣泡排序重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。選擇排序每一趟從待排序的 資料元素 中選出最小 或最大 的乙個元素,順序放在已排好序的數列的...