您的位置:首页 > 编程语言

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

2017-08-05 09:48 911 查看
输入一个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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  二维数组
相关文章推荐