数组元素位置调换——改变算法后

来源:互联网 发布:欢乐颂2网络播出时间 编辑:程序博客网 时间:2024/05/29 17:01
/* (程序头部注释开始) </p><p>* 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生                              * 作    者:   李兆庆                         * 完成日期:   2012      年   9    月    18   日 * 输入描述:   * 问题描述及输出:  编写一个Java应用程序,* 实现功能:将二维数组中值最大的元素和左上角元素对调,然后将值最小的元素与右下角元素对调。例如:1 4 5 67 2 10 119 8 12 3,对调后结果12 4 5 67 2 10 119 8 3 1 * 程序头部的注释结束 */public class Num{/** * @param args */public static void main(String[] args) {     int[][] a = { { 1, 4, 5, 6 }, { 7, 2, 10, 11 }, { 8, 9, 12, 3 } };         System.out.println("对调前输出数组为:");    printMatrix(a);               //按二维方式输出数组System.out.println("对调后输出数组为:");printNewMatrix(a);           //对调后输出数组printMatrix(a);               //按二维方式输出数组}//按二维方式输出数组static void printMatrix(int[][] a){for (int i = 0; i < a.length; i++){for (int j = 0; j < a[i].length; j++){System.out.print(a[i][j]+"   ");}System.out.println();}}//对调后输出数组static void printNewMatrix(int[][] a){int max = a[0][0],min = a[0][0], p = 0, q = 0, b = 0, c = 0, d = 0, f = 0;    for (int i = 0; i < a.length; i++){    for (int j =0; j < a[i].length-1 ; j++){ if (min >a[i][j+1]){    //查找数组中最小元素,并记录其下表。min = a[i][j+1];b = i;       //将较小的元素的行下表记录下来。c = j+1;     //将较小的元素的列下表记录下来                }if (max<a[i][j+1]){    ////查找数组中最大元素,并记录其下表max = a[i][j+1];p = i;         //将较大的元素的行下表记录下来q = j+1;       //将较大的元素的列下表记录下来}                }    }    f = a[a.length - 1][a[0].length - 1];        a[a.length - 1][a[0].length - 1] = a[b][c];     //将最小值元素调换到数组右下角位置    a[b][c] = f;        d = a[0][0];        a[0][0] = a[p][q];                             //将最大值元素调换到数组左上角位置        a[p][q] = d;        }        }

原创粉丝点击