版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014543872/article/details/84330331
题目描述
有一个长度为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);
}
}