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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

分析以下需求,并用代码实现:
        (1)定义一个int类型的一维数组,内容为{6,2,9,15,1,5,20,7,18}
        (2)将数组最大元素与最后一位元素进行交换,最小元素与第一位元素进行交换,并打印数组
        提示思路:先查找最大值和最小值出现的索引。

3 个回复

倒序浏览
public static void main(String[] args) {
                int [] arr = {6,2,9,15,1,5,20,7,18};
        int min = arr[0];
        int max = arr[0];        
        for (int i = 0;i < arr.length ;i++ ) {
                        if (max<arr[i]) {
                                max=arr[i];
                        }
           if (min>arr[i]) {
                                min=arr[i];
                   }
        }
         
        for (int i = 0; i < arr.length; i++ ) {
            if (arr[i] == max) {
                                int temp1 = arr[i];
                                arr[i] = arr[arr.length - 1];
                                arr[arr.length - 1] = temp1;
            }
            if (arr[i] == min) {
int temp2 = arr[i];
                 arr[i] = arr[0];
                 arr[0] = temp2;
            }
                                 
            }

            for (int i = 0; i < arr.length; i++ ){
                  System.out.print(" " + arr[i]);
            }
        }
}
回复 使用道具 举报
  1. class Test {
  2.         public static void main(String[] args) {
  3.                 int[] arr = new int[]{6,2,9,15,1,5,20,7,18};
  4.                 print(arr);

  5.                 System.out.println();

  6.                 int maxMark = getMaxMark(arr);
  7.                 System.out.println(maxMark);       
  8.                
  9.                 int minMark = getMinMark(arr);
  10.                 System.out.println(minMark);
  11.                
  12.                 revArray(arr,maxMark);
  13.                 rArray(arr,minMark);
  14.                 print(arr);
  15.         }

  16.         public static void print(int[] arr) {
  17.                 for (int i = 0;i < arr.length ;i++ ) {
  18.                         System.out.print(arr[i] + ",");
  19.                 }
  20.         }
  21.         public static int getMaxMark(int[] arr) {
  22.                 int mark = arr[0];
  23.                 for (int i = 0;i < arr.length ;i++ ) {
  24.                         if (arr[mark] < arr[i]) {
  25.                                 mark = i;
  26.                         }
  27.                 }
  28.                 return mark;
  29.         }

  30.         public static int getMinMark(int[] arr) {
  31.                 int min = arr[0];
  32.                 for (int i = 0;i < arr.length ;i++ ) {
  33.                         if (arr[min] > arr[i]) {
  34.                                 min = i;
  35.                         }
  36.                 }
  37.                 return min;
  38.         }

  39.         public static void revArray(int[] arr,int maxMark) {
  40.                 int temp = 0;
  41.                 temp = arr[arr.length - 1];
  42.                 arr[arr.length - 1] = arr[maxMark];
  43.                 arr[maxMark] = temp;
  44.         }

  45.         public static void rArray(int[] arr,int minMark) {
  46.                 int temp = 0;
  47.                 temp = arr[0];
  48.                 arr[0] = arr[minMark];
  49.                 arr[minMark] = temp;
  50.         }       
  51. }
复制代码
回复 使用道具 举报
思路正确。只需要遍历数组。设置2个变量标记最大值最小值的索引。然后进行交换即可。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马