ZZULI OJ 1120: 最值交換
阿新 • • 發佈:2018-11-23
題目描述
有一個長度為n的整數序列。請寫一個程式,先把序列中的最小值與第一個數交換,再把最大值與最後一個數交換。輸出轉換好的序列。 分別編寫兩個函式MinIndex()和MaxIndex()來計算最小值下標和最大值下標。
intMinIndex(int a[], int n); //函式返回陣列a中最小元素的下標
intMaxIndex(int a[], int n); //函式返回陣列a中最大元素的下標
陣列元素的輸出呼叫函式PrintArr()。
輸入
輸入包括兩行。
第一行為正整數n(1≤n≤10)。
第二行為n個正整陣列成的序列,保證沒有重複元素。
輸出
輸出轉換好的序列。資料之間用空格隔開。
樣例輸入
5 5 4 1 2 3
樣例輸出
1 4 3 2 5
import java.util.Scanner; public class Main { //返回陣列中的最小值的索引值 public int MinIndex(int[] a,int n){ int min=a[0]; int index=0; for (int i=0;i<n;i++){ if(min>a[i]){ min=a[i]; index=i; } } return index; } //返回陣列中的最大值的索引值 public int MaxIndex(int[] a,int n){ int max=a[0]; int index=0; for (int i=0;i<n;i++){ if(max<a[i]){ max=a[i]; index=i; } } return index; } //列印陣列中的所有值 public void PrintArr(int[] a,int n){ for (int i=0;i<n;i++){ System.out.print(a[i]+" "); } } public static void main(String[] args) { Main main=new Main(); Scanner input=new Scanner(System.in); int n=input.nextInt(); int[] arr=new int[n]; for (int i=0;i<n;i++){ int num=input.nextInt(); arr[i]=num; } //最小值與陣列第一個值交換位置 int min_index=main.MinIndex(arr,n); int temp=0; temp=arr[min_index]; arr[min_index]=arr[0]; arr[0]=temp; //此時陣列最大值與最後一位值交換位置 int max_index=main.MaxIndex(arr,n); int temp1=0; temp1=arr[max_index]; arr[max_index]=arr[n-1]; arr[n-1]=temp1; //列印陣列元素 main.PrintArr(arr,n); } }