練習7 2 求最大值及其下標

2021-08-29 10:02:18 字數 1834 閱讀 2484

練習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...