#40843: 解答 c++


hs210023@students.hshs.chc.edu ... (天底下最帥的那個男人)

學校 : 不指定學校
編號 : 274462
來源 : [39.9.190.55]
最後登入時間 :
2024-06-17 21:52:54
a225. 明明愛排列 | From: [27.247.62.93] | 發表日期 : 2024-06-14 21:48

你的程式碼使用了泡沫排序法來進行排序,並且根據數字的個位數來進行比較。如果個位數相同,則比較整個數字。這段程式碼基本上是正確的,但有一些可以改進的地方:

 

  1. 改善變數命名和註解:更清晰的變數命名和註解可以讓程式碼更易於理解。
  2. 優化泡沫排序法:使用標準庫中的排序函數 sort 可以提高程式碼的可讀性和效率。

 

以下是優化後的程式碼:
 
#include <iostream>
#include <algorithm>
using namespace std;

// 自定義比較函數
bool compare(int a, int b) {
    if (a % 10 != b % 10)
        return a % 10 < b % 10; // 比較個位數
    return a > b; // 如果個位數相等,則比較整個數字
}

int main() {
    int len, arr[1001];
    while (cin >> len) {
        for (int i = 0; i < len; i++) { // 輸入
            cin >> arr[i];
        }
        // 使用標準庫中的 sort 函數進行排序
        sort(arr, arr + len, compare);
        
        for (int i = 0; i < len; i++) {
            cout << arr[i] << " ";
        }
        cout << endl;
    }
    return 0;
}

 

 

 

說明

 

  1. **自定義比較函數 compare**:
    • compare 函數用來定義排序的規則。首先比較數字的個位數,如果個位數不相等,則按個位數排序;如果個位數相等,則按整個數字的大小排序(由大到小)。
  2. 使用 sort 函數
    • 標準庫中的 sort 函數可以更高效地進行排序,並且使程式碼更簡潔。
  3. 輸入和輸出
    • 輸入部分保持不變,依然使用 cin 來讀取數據。
    • 排序後,使用 cout 來輸出排序結果。

 

這樣的優化不僅提高了程式碼的可讀性和效率,還使得排序邏輯更加清晰。希望這些改進對你有幫助
 
ZeroJudge Forum