1. 程式人生 > >ZZULI OJ 1120: 最值交換

ZZULI OJ 1120: 最值交換

題目描述

有一個長度為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);

        }
}