演算法設計——成績排序:氣泡排序
阿新 • • 發佈:2018-11-30
問題說明
輸入幾名同學的姓名何成績,對這些同學的成績進行排序,然後按照成績從大到小的順序進行排序,輸出對應的名次和姓名
程式碼實現
#include<iostream> // 輸入姓名時可用字串輸入,輸入字串標頭檔案表示 #include<string> using namespace std; int main() { // 符號常量的定義 const int M = 1000; int n, N,j,i; // ranking 表示次序 int ranking = 1; // 結構體定義,包括學生的姓名和成績 typedef struct student { string Na; double G; }st; // 定義一個數組用來儲存幾組學生的姓名和成績 st ST[M]; st t; while (cin >> N&&N > 0) { for (n = 0; n < N; n++) { cin >> ST[n].Na>>ST[n].G; } // 利用氣泡排序法進行成績排序(這裡進行反置,按從大到小的順序排列) for (i = 0; i <N-1; i++) for (j = 0; j < N - 1 - i;j++) if (ST[j].G<ST[j + 1].G) { // 判斷大小後對整個結構體進行調換 t = ST[j]; ST[j] = ST[j + 1]; ST[j + 1] = t; } for (n = 0; n < N; n++) { cout << ranking << " "; cout << ST[n].Na << endl; ranking++; } if (n == N) break; } return 0; }