将数组中最小值与第一个数交换,最大值与最后一个数交换
import java.util.Scanner;
public class work5 {
//输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组
public static void main(String[] args) {
Scanner a = new Scanner(System.in);
System.out.print("请输入数组长度:");
int q = a.nextInt();
int max = 0;
int min = 0;
int[] b = new int[q];
for(int c = 0;c<6;c++){
int d = a.nextInt();//
b[c] = d;
}
for(int e = 0;e<b.length;e++){
if(b[e]>b[max]){//一个数比最大的数还大 这个数就是最大的
max=e;//获取最大值的位置
}else if(b[min]>b[e]){//一个数比最小的数还小 这个数就是最小的
min=e;//获取最小值的位置
}
}
//最大的数与最后一个数交换
int f = b[[q-1];//把数组里最后一个元素暂赋值给f
b[[q-1] = b[max];//把最大值赋给数组最后一个元素
b[max] = f;//把f赋值给数组里最后一个元素
//最小的与第一个交换
int g= b[0];//q为定义的数组长度 减1是因为数组里第一个元素比数组长度小一
b[0] = b[min];
b[min] = g;
for(int h = 0;h<b.length;h++){
System.out.print(b[h]+" ");
}
}
import java.util.Random;
public class Test {
public static void main(String[] args) {
int[] origin = new int[10];
Random random = new Random();
System.out.println("原始的数据为:");
for (int i = 0; i < origin.length; i++) {
origin[i] = random.nextInt(100);
System.out.print(origin[i] + " ");
}
System.out.println("\n操作后的数组为");
new Test().operate(origin);
for (int v : origin) {
System.out.print(v + " ");
}
}
public void operate(int[] origin) {
if (origin == null || origin.length == 0) {
return;
}
int minInd = 0, maxInd = 0;
for (int i = 1; i < origin.length; i++) {
if (origin[i] < origin[minInd]) {
minInd = i;
}
if (origin[i] > origin[maxInd]) {
maxInd = i;
}
}
swap(origin, 0, minInd);
swap(origin, origin.length - 1, maxInd);
}
/**
* 交换 t1, t2 位置的数
*/
public void swap(int[] origin, int i1, int i2) {
int t = origin[i1];
origin[i1] = origin[i2];
origin[i2] = t;
}
}
这里只提供一种思路,可以使用遍历的办法遍历每一个数据,记录下最大和最小,然后再替换。
设置一个默认的最小值比如-99999,默认最大值比如999999.然后比较。
这里只提供一种思路,经典排序先排一下, 确定最大最小值
原数据中查找所在位置, 交换。