有一个数组:{37,11,33,45,86,77} 将最小值和最大值交换位置并输出

ZHANG_JIA_GANG 2017-12-10 10:47:00
有一个数组:{37,11,33,45,86,77} 要求将最小值和最大值交换位置并输出,最大值和最小值已经求出来了,最大值和最小值交换位置,不知道怎么做了,请大神指教

class Demo1 {

public static void main(String[] args) {
int[] arr = {37,11,33,45,86,77};

int max = getMax(arr);

int min = getMin(arr);

for (int i = 0; i < 6;i++ ) {
System.out.println(arr[i]);
}



}

//获取最大值

public static int getMax(int[] arr1) {
int max = arr1[0];
for (int a = 1;a < arr1.length ;a++ ) {
if (arr1[a] > max) {
max = arr1[a];
}
}
return max;
}


//获取最小值
public static int getMin(int[] arr2) {
int min = arr2[0];
for (int i = 1;i < arr2.length ;i++ ) {
if (arr2[i] < min) {
min = arr2[i];
}
}
return min;
}




}
...全文
207 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
叮咚呛咚呛 2017-12-11
  • 打赏
  • 举报
回复
如果需要考虑性能的话建议你就用一个for循环 这么多个for循环多浪费呀 如果数组长度有点大 那就更坑了,一个for循环可以搞定的事情 没必要分开 当然啦 如果需要取最大值 和最小值 倒是可以这拆开 但是你的换位 建议你单独写一个方法,只用一个for循环即可实现
X元素 2017-12-11
  • 打赏
  • 举报
回复
求最大、最小值的时候,顺便把值的下标记录下来 ,然后元素互换就行了。
自由自在_Yu 2017-12-11
  • 打赏
  • 举报
回复
public static void main(String[] args) {
		int[] arr = { 37, 11, 33, 45, 86, 77 };
		int max = getMax(arr);
		int min = getMin(arr);
		System.out.println("最大值:"+arr[max]+",最小值:"+arr[min]);
		//交换
		int temp = arr[min];
		arr[min] = arr[max];
		arr[max] = temp;
		for (int i = 0; i < 6; i++) {
			System.out.print(arr[i] + " ");
		}
	}

	public static int getMax(int[] arr1) {
		int max = arr1[0];
		int index = 0; //最大值对应的下标
		for (int a = 1; a < arr1.length; a++) {
			if (arr1[a] > max) {
				max = arr1[a];
				index = a;
			}
		}
		return index;
	}

	// 获取最小值
	public static int getMin(int[] arr2) {
		int min = arr2[0];
		int index = 0; ////最小值对应的下标
		for (int i = 1; i < arr2.length; i++) {
			if (arr2[i] < min) {
				min = arr2[i];
				index = i;
			}
		}
		return index;
	}

50,531

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧