排序是用來整理一群數值,讓這些數值由大而小排列,或則由小排列到大的演算法。氣泡排序法為其中一種排序方法,因為它會把最小值由最底浮上最高層,有點像最輕的氣泡浮到可樂杯最上層,所以叫做氣泡排序法。本實驗學生要撰寫一個氣泡排序程式來進行學生成績排名的工作。
1、 寫一個程式來排序一個1維得分數向量,程式會先以printf(),scanf()要求使用者輸入分數,排完序後再依高低分重新顯示分數:
演算法如下其中是 n原序列長度
for i 從數列長度漸減至1 {
for j 從 0 到 i-1 {
if (A[j] > A[j+1])
互換位置
}
}
2、 修改前述程式,先以printf(),scanf()要求使用者輸入,學號以及分數,並將輸入存入一個2維陣列,一列為學號,另一列為分數。 以printf()顯示學號對應分數。 完成後執行泡泡排序法,在依分數排序的同時,帶動學號連動,最終得到學生學號及成績依成績排序。完成排序後顯示照高低分排名的學號以及分數。
3、 PC端使用ASADataAgent程式,ASA端使用HMI_snput_matrix(),
HMI_snget_matrix()驅動函式,重做第2題。
• 由ASA電腦,通知ASADataAgent操作人員建立學號及分數矩陣後傳送給ASA電腦。
• 由ASA電腦執行以成績排序後,再將矩陣回傳給ASADataAgent顯示。
4、 利用資料結構語法來處理相同的問題
• 學生資料結構及形態:以學生人名(20個英文字母字串),學號(長正整數),分數值(短正整數)三個元素,組合成學生的學生資料結構。並將學生資料結構定義成一個新的學生資料結構形態。
• 宣告一個初始巨集:巨集內容三個均為零
• 班級成績資料結構格式宣告,資料結構定義及初始化:
◦ 班級成績資料結構格式,
▪ 科目名稱欄:元素1個
▪ 學生人數欄:元素1個
▪ 學生資料結構形態 : 元素5個 。
◦ 定義並初始化班級成績資料結構:以己宣告格式定義出資料結構同時初始化所有學生人名,學生學號,以及成績均為0。
• 輸入成績:
◦ 初始成績傳給PC:將初始化後空白班級成績資料結構內容傳給PC。
◦ 要求PC提供完成登錄成績單:要求PC將己登錄班級成績資料結構內容回傳 ASA。
• 成積排序:以氣泡法重新排序前述名單。
• 輸出排序後成績單:將排序後後班級成績資料結構內容傳給PC。