練習7-2 求最大值及其下標 (20 分)
本題要求編寫程式,找出給定的n個數中的最大值及其對應的最小下標(下標從0開始)。
輸入在第一行中給出乙個正整數n(1在一行中輸出最大值及最大值的最小下標,中間用乙個空格分開。
6
2 8 10 1 9 10
10 2
思路一:先遍歷一邊陣列找出最大值max;然後以max作為另乙個函式的引數,再遍歷一邊陣列,將max與每乙個數字進行比較,找出最小下標。
**:
#define _crt_secure_no_warnings 1
#include#include//思路一:(1)將數字存入陣列中,先遍歷陣列找出最大值max;
//(2)將最大值max作為引數,在另乙個函式中再遍歷陣列,將每乙個值與max比較,找出最小下標
int findmaxnum(int a, int n)
} return max;
}//找最大值的最小下標
int findindex(int a, int n, int max)
} return index;
}int main()
; int n = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++)
int _max = findmaxnum(arr, n);
int _index = findindex(arr, n, _max);
printf("%d %d\n", _max, _index);
system("pause");
return 0;
}
測試結果:
缺點:遍歷了2遍陣列,時間複雜度較高。
優化方案:index儲存最大值所在的最小下標,arr[index]即為最大值;遍歷一遍陣列,邊遍歷邊比較數值大小,不斷更新index,最後index就是最大值的最小下標,arr[index]為最大值。這樣時間複雜度就降為o(n)
**:
#define _crt_secure_no_warnings 1
#include#include//思路二:o(n)時間複雜度
//index儲存最大值所在的最小下標,arr[index]即為最大值;
//遍歷一遍陣列,邊遍歷邊比較數值大小,不斷更新index,最後index就是最大值的最小下標,arr[index]為最大值
int find_maxnum_index(int a, int n)
} return index;
}int main()
; int n = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++)
int _index = find_maxnum_index(arr, n);
printf("%d %d\n", arr[_index], _index);
system("pause");
return 0;
}
測試結果:
7 2 求最大值及其下標程式設計總結
7 2 本題要求編寫程式,找出給定的n個數中的最大值及其對應的最小下標 下標從0開始 輸入在第一行中給出乙個正整數n 1 第二行輸入n個整數,用空格分開。在一行中輸出最大值及最大值的最小下標,中間用乙個空格分開。6 2 8 10 1 9 10 10 2 一 實驗 include int main v...
陣列 求最大值及其下標
題目 求最大值及其下標。要求 找出給定的n個數中的最大值及其對應的最小下標 下標從0開始 輸入格式 輸入在第一行中給出乙個正整數n 1輸入樣例 6 2 8 10 1 9 10 輸出樣例 10 2 思路一 由於題目中要求的時輸入n個正整數,數量不確定,故可以考慮陣列來儲存不確定個數的變數 先定義陣列 ...
求最大值及其下標程式設計總結
2 求最大值及其下標 20 分 本題要求編寫程式,找出給定的n個數中的最大值及其對應的最小下標 下標從0開始 輸入在第一行中給出乙個正整數n 1 在一行中輸出最大值及最大值的最小下標,中間用乙個空格分開。62 8 10 1 9 10 10 2 include int main void printf...