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

来源:互联网 发布:linux服务器修改密码 编辑:程序博客网 时间:2024/05/19 22:03

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

}

}

阅读全文
0 0