整型数组,最大值与数组第一个值交换,最小值与最后一个值交换

来源:互联网 发布:耐克淘宝代购是真货么 编辑:程序博客网 时间:2024/06/07 05:55

RT:整型数组,最大值与数组第一个值交换,最小值与最后一个值交换

前两天在网上看到一道题比较有意思,有个容易被疏忽的地方,Ok,要求如题,代码如下:

package org.wxp.sort;import junit.framework.TestCase;/** * 一个整型数组,将其中最大的值与数组的第一个值交换,最小的值与数组最后一个值交换 根据循环找出最大值和最小值以及它们在数组中的下标;根据下表来交换数据; * 重点:如果先交换最大值和第一个值,那么如果数组中第一个值为最小值时,后边交换最小值的时候,最小值的下标此时已经变了,因为刚才被最大值给交换了, * 此时要把最大值的下标付给最小值的下标,才能正常交换。反之亦然; *  * @author Champion.Wong *  */public class Sort_01 extends TestCase {private int[] arr = { 1, 3, 5, 6, 4, 9, 7 }; // 定义一个数组public void test() {int max = 0, min = 0; // 最大值、最小值int i1 = 0, i2 = 0; // 最大值在数组中的下表,最小值在数组中的下标int temp = 0; // 用于数据交换max = min = arr[0]; // 默认最大值和最小值为数组的第一个值for (int i = 1; i < arr.length; i++) {if (max < arr[i]) { // 获取数组中最大值和最大值下标max = arr[i];i1 = i;}if (min > arr[i]) {min = arr[i];i2 = i;}}// 将最大值与数组的第一个值交换temp = arr[0];arr[0] = arr[i1];arr[i1] = temp;/* * 如果数组的第一个值就是最小值,那么刚才在交换的过程中,已经被移动了位置, 那么目前最小值的位置就是刚才最大值的位置,即第一次移动的值的位置 */if (min == arr[i1]) {i2 = i1;}// 将最小值与数组的最后一个值交换temp = arr[arr.length - 1];arr[arr.length - 1] = arr[i2];arr[i2] = temp;System.out.println(max + "===" + min);System.out.println(i1 + "===" + i2);for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + "");}}}


最后控制台的输出结果如下:



不足之处,敬请指正!

转载请注明出处:http://blog.csdn.net/it_wangxiangpan/article/details/8700935

原创粉丝点击