A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

* 需求:给定一个数组,要求将数组中的最小值和最大值进行交换;
* 例如:  处理前:                [10,4,1,2,6,5,8,3]
*       处理后:                [1, 4, 10, 2, 6, 5, 8, 3]
*/
class day05{
         public static void main(String[] args){
                int[]arr = {10,4,1,2,6,5,8,3};
                /*int temp = arr[getMaxindex(arr)];
                        arr[getMaxindex(arr)]= arr[getMinindex(arr)];
                        arr[getMinindex(arr)] = temp;
                                                                                                                以上表示方法为什么不能交换
                        */       
                                int a = getMaxindex(arr);
                                int b = getMinindex(arr);
                                int temp = arr[a];
                                arr[a]= arr[b];
                                arr[b] = temp;                                                        //这样可以交换
                                print(arr);
         }
         public static int getMaxindex(int[]arr){
                 int max = arr[0];
                 int index1 = 0;
                 for (int x = 1;x < arr.length ;x++ ){
                         if (max < arr[x]){
                                 max = arr[x];
                                 index1 = x;
                         }
                 }
                                return index1;
         }
         public static int getMinindex(int[]arr){
                 int min = arr[0];
                 int index2 = 0;
                 for (int y = 1;y < arr.length ;y++ ){
                         if (min > arr[y]){
                                 min = arr[y];
                               
                                index2 = y;
                         }
                 }
                                return index2;
         }
         public static void print(int[] arr){
                 for (int i = 0;i < arr.length ;i++ ){
                        System.out.print(arr[i]+" ");
                        }
         }
}

4 个回复

倒序浏览
class Test2 {         public static void main(String[] args){                 int[] arr = new int[] {6,2,9,15,1,5,20,7,18};                 int temp1 = arr[getMaxIndex(arr)];                 arr[getMaxIndex(arr)] = arr[8];                 arr[8] = temp1;                 int temp2 = arr[getMinIndex(arr)];                 arr[getMinIndex(arr)] = arr[0];                 arr[0] = temp2;                 print (arr);         }         public static int getMaxIndex(int[] arr){                 int max = arr[0];                 int x = 0;                 for (int i = 1;i < arr.length ;i++ ){                         if (max < arr[i]){                                 max = arr[i];                                 x = i;                         }                 }                 return x;         }         public static int getMinIndex(int[] arr){                 int min = arr[0];                 int y = 0;                 for (int i = 1;i < arr.length ;i++ ){                         if (min > arr[i]){                                 min = arr[i];                                 y = i;                         }                 }                 return y;         }         public static void print(int[] arr){                 for (int i = 0;i < arr.length ;i++ ){                         System.out.print(arr[i] + " ");                 }         } }
回复 使用道具 举报
class Test2 {
        public static void main(String[] args){
                int[] arr = new int[] {6,2,9,15,1,5,20,7,18};
                int temp1 = arr[getMaxIndex(arr)];       // 同类型的体可以直接调用
                arr[getMaxIndex(arr)] = arr[8];
                arr[8] = temp1;
                int temp2 = arr[getMinIndex(arr)];
                arr[getMinIndex(arr)] = arr[0];
                arr[0] = temp2;
                print (arr);
        }
        public static int getMaxIndex(int[] arr){
                int max = arr[0];
                int x = 0;
                for (int i = 1;i < arr.length ;i++ ){
                        if (max < arr[i]){
                                max = arr[i];
                                x = i;
                        }
                }
                return x;
        }
        public static int getMinIndex(int[] arr){
                int min = arr[0];
                int y = 0;
                for (int i = 1;i < arr.length ;i++ ){
                        if (min > arr[i]){
                                min = arr[i];
                                y = i;
                        }
                }
                return y;
        }
        public static void print(int[] arr){
                for (int i = 0;i < arr.length ;i++ ){
                        System.out.print(arr[i] + " ");
                }
        }
}
回复 使用道具 举报
int temp = arr[getMaxindex(arr)];       // temp=10
arr[getMaxindex(arr)]= arr[getMinindex(arr)];   //最小值赋值给最大值       数组前三    1  4   1
arr[getMinindex(arr)] = temp; // 你的最小值的取值方法取得的是第一个最小值  也就是第一个1变成10了   10  4  1
因为你这里写的是方法  所以每当运行到方法时都要重新取得最大值与最小值
回复 使用道具 举报
&天马星空ぁ 发表于 2016-9-19 01:13
int temp = arr[getMaxindex(arr)];       // temp=10
arr[getMaxindex(arr)]= arr[getMinindex(arr)];    ...

谢谢!!明白了!第三次交换取值的数组变了.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马