输入一个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;
}
}