五、請實作下列函式以完成設計l個插入排序法(Insertion Sort),據以依參數值決定排序方式採遞增或遞減。(18分)
 bool isInverse(int x, int y, bool isAsc); //判斷傳入的x、y是否反序
  void InsertionSort(int *arr, int len, bool isAsc); //插入排序
(註:參數arr為傳入的整數陣列;參數len為整數陣列的長度;參數isAsc為是否遞增, 函式Insertion Sort應呼叫函式isInverse。)

申論題作答 (共 7 筆)

依時間顯示最近 7 筆。
willislin
willislin
申論題作答 #110325
84 分
84 總分
題意符合度
90分
論證結構
75分
語言表達
90分
1分37秒 總時間 0 人解鎖 2026.10
public static boolean isInverse(int x, int y, boolean isAsc) { if(isAsc...
解鎖 60 字
勝利女神
勝利女神
申論題作答 #109829
28 分
28 總分
題意符合度
35分
論證結構
20分
語言表達
30分
60分44秒 總時間 0 人解鎖 2026.10
<?php bool function isInverse(int x,int y ,bool isAsc){ if(xy){return tr...
解鎖 105 字
Kiwi Tsai
Kiwi Tsai
申論題作答 #108789
36 分
36 總分
題意符合度
45分
論證結構
25分
語言表達
40分
62分18秒 總時間 0 人解鎖 2026.10
include include bool isInverse(int x, int y, bool isAsc){ if(isAsc){ ret...
解鎖 85 字
Kiwi Tsai
Kiwi Tsai
申論題作答 #108686
7 分
7 總分
題意符合度
5分
論證結構
8分
語言表達
10分
41分5秒 總時間 0 人解鎖 2026.10
include include void InsertionSort(int arr, int len, bool isAsc){ int ar...
解鎖 79 字
哈哈
哈哈
申論題作答 #105651
93 分
93 總分
題意符合度
100分
論證結構
90分
語言表達
85分
63分8秒 總時間 5 人解鎖 2026.09
include<iostream using namespace std; bool isInverse(int x, int y, bool...
解鎖 167 字 5 人已解鎖
Fuuuuuuuu
Fuuuuuuuu
申論題作答 #93987
75 分
75 總分
題意符合度
72分
論證結構
70分
語言表達
88分
1分56秒 總時間 6 人解鎖 2026.07
C++ // 1. 判斷x與y之間的順序 // isAsc == true,代表x與y之間需要漸增 // i...
解鎖 104 字 6 人已解鎖
Fuuuuuuuu
Fuuuuuuuu
申論題作答 #91768
36 分
36 總分
題意符合度
35分
論證結構
25分
語言表達
55分
3分5秒 總時間 3 人解鎖 2026.07
cpp bool isInverse(int x, int y, bool isAsc) { // 狀況一:若要求遞增排序...
解鎖 191 字 3 人已解鎖

詳解 (共 3 筆)

t23
t23
詳解 #6848839
2025/10/06
#include <stdio.h...
(共 1095 字,隱藏中)
前往觀看
佳佳
佳佳
詳解 #6234987
2024/10/24
使用C++實作如下: #include...
(共 1159 字,隱藏中)
前往觀看
adamhsu622
adamhsu622
詳解 #6235556
2024/10/24
// 這邊用 c 簡單驗證, 題目中的 bool 型態先用 int 型態替代
int isInverse(int x, int y, int isAsc) {
    // isAsc is true, 表示要遞增排序,但是 x > y, 故為 Inverse, 
   // 所以回傳 1,否則為 0
    if (isAsc == 1)
        return ((x > y) ? 1 : 0 );
ㅤㅤ
    // isAsc is false,表示要遞減排序,但是 x < y, 故為 Inverse,
   // 所以回傳 1,否則為 0
    if (isAsc == 0)
        return ((x > y) ? 0 : 1 );
ㅤㅤ
    return -1;
}
ㅤㅤ
void InsertionSort(int *arr,int len, int isAsc) {
    int j,k,temp;
    
    for (int i = 2; i <=n; i++) { // 假設陣列索引值從 1 開始
        j = (i - 1), k = i;
            
        while (j > 0 && (isInverse(arr[j], arr[k], isAsc) == 1)) {
                temp = arr[k];
                arr[k] = arr[j];
                arr[j] = temp;
                j--;
                k--;
            }       
        }
    }
}
ㅤㅤ
// 可用以下方式驗證
void main() {
    int arr[9] = {-1,2,5,1,19,100,21,-2,15};
    InsertionSort(arr,8,1);
    for (int i=1;i < 9;i++)
        printf("%d ",arr[i]);
}