请通过代码实现以下功能:输入一个5X5的二维数组,将数组进行排序,其中一维数组按照平均值降序,一维数组内部升序排列。

xiaoxiao2021-02-27  128

输入一个5X5的二维数组,将数组进行排序,其中一维数组按照平均值降序,一维数组内部升序排列。 这个问题的要点在于平均值排序和数组每行排序的结合,当然这里也可以写一个简单的方法实现,这里只用了最基本的面向过程的知识,新手可借鉴。 1.遍历数组每一行,得到平均值 2.把平均值赋给一个数组 3.对该数组进行排序,得到角标 4.遍历数组从小到大输出每一行,且行数为之前得到的角标数

public static void main(String[] args) {

int[][] sz = { { 2, 5, 9, 5, 8 }, { 81, 89, 83, 86, 88 }, { 77, 78, 71, 73, 79 }, { 66, 65, 64, 66, 67 },

{ 96, 95, 99, 94, 93 } };

//平均值的五个数为一个数组

double[]paixu = newdouble[5];

//平均值给依次给数组元素

double sum = 0.0;

for (inti = 0; i < sz.length;i++) {

sum = 0.0;

for (intj = 0; j < sz[i].length;j++) {

sum =sum + sz[i][j];

}

paixu[i] =sum;

}

//y拿到平均值最大的数,x拿到该数的角标,然后y值归零,以免影响第二次数值的比较

for (intk = 0; k <= 4; k++) {

int x = 0;

doubley = paixu[k];

for (intl = 0; l < 4; l++) {

doublea = 0;

if (paixu[l] <paixu[l + 1]) {

y =paixu[l + 1];

x =l + 1;

}

}

paixu[x] = 0;

//遍历数组的过程,排i的值为x   即按照平均值从大到小输出

int i = x;

System.out.println();

for (intj = 0; j < sz.length;j++) {

inta = sz[i][j];

intb = 0;

if(i>=0 &&i<=4){

for (intm = j; m <sz.length; m++) {

if (a >sz[i][m]) {

b =a;

a =sz[i][m];

sz[i][m] =b;

}

}

}

System.out.print(a);

System.out.print(" ");

}

doubleavg = sum / 5;

}

}

转载请注明原文地址: https://www.6miu.com/read-16143.html

最新回复(0)