java二维数组怎么排序

悠悠-我心 2012-04-13 10:41:02
除了myeclipse自带的排序还有什么 方法 可以实现对下面二维数组的排序
题目:已知



整型 二维数组
int[][]=new int[][]{{12,3,14,11},{1,2,6,4},{5,15,7,8},{5,9,10,13}};


怎么实现 达到 运行如下结果



{1,2,3,4}
{5,6,7,8}
{9,10,11,12}
{13,14,15,16}





请高手指教!!…………

...全文
3258 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
古市轩 2012-04-14
  • 打赏
  • 举报
回复
5楼++
dalancon 2012-04-14
  • 打赏
  • 举报
回复
LZ只要记住不管几维数组,其实都可以看做一维数组,要有这种意识,遇到这种题目,如果你很熟练一维数组的排序,那你可以将当前数组先变为一维数组,然后可以自己排序,也可以用Arrays.sort(数组名)
悠悠-我心 2012-04-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

Java code

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

class Sort
{
public static void main(String[] args)
{
int arr[][]=new int[][]{{12,3,14,11……
[/Quote]

myeclipse 中 这一句有警告
List list=new ArrayList<Integer>();

List 是原始类型。应该将对通用类型 List<E> 的引用参数化

改成 List<Integer> list=new ArrayList<Integer>();
就好了


OrionBox 2012-04-13
  • 打赏
  • 举报
回复

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

class Sort
{
public static void main(String[] args)
{
int arr[][]=new int[][]{{12,3,14,11},{1,2,6,4},{5,15,7,8},{5,9,10,13}};
int a=0;
List list=new ArrayList();
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
list.add(arr[i][j]);
}
}

Collections.sort(list);
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
arr[i][j]=Integer.parseInt(list.get(a).toString());
a++;
}
}

for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++)
System.out.print(arr[i][j]+"\t");
System.out.println("\n");
}
}
}
OrionBox 2012-04-13
  • 打赏
  • 举报
回复
4次循环最直观.
三易的博客 2012-04-13
  • 打赏
  • 举报
回复

package com.liangpeng.csdn;

public class TestArray {

public static void main(String[] args) {

int[][] a=new int[][]{{12,3,14,11},{1,2,6,4},{5,15,7,8},{16,9,10,13}};
int[] b = new int[16];
for(int i=0; i<4; i++) { //把二维数组变为以为数组
for(int j=0; j<4; j++) {
b[4*i+j] = a[i][j];
}
}

for(int i=0; i<b.length; i++) { //对一维数组进行排列
int index = 0;
for(int j=1+i; j<b.length; j++) {
if(b[i] >b[j]) {
int num = 0;
num = b[i];
b[i] = b[j];
b[j] = num;
}
}
}

for(int i=0; i<4; i++) { //再将一维数组变为二维数组
for(int j=0; j<4; j++) {
a[i][j] = b[4*i + j];
}
}

for(int i=0; i<4; i++) { //对二维数组进行输出
int count = 0;
for(int j=0; j<4; j++) {
count++;
System.out.print(a[i][j] + ",");
if(count == 4) {
System.out.println();
}
}
}

}

}
古市轩 2012-04-13
  • 打赏
  • 举报
回复
package org.lw.test;

import java.util.Set;
import java.util.TreeSet;


public class Test17 {

public static void main(String[] args) {
int[][] array ={{12,3,14,11},{1,2,6,4},{5,15,7,8},{16,9,10,13}};
Set<Integer> set = new TreeSet<Integer>();
for(int i =0; i<4; i++){
for(int j=0; j<4; j++){
set.add(array[i][j]);
}
}
Object[] integer = set.toArray();

for(int i=0; i<4; i++){
for(int j=0; j<4; j++){
System.out.print(integer[4 * i + j] + ", ");
}
System.out.println();
}



}
}

这个可以实现无重复数据的,但是有重复数据就会出错,本人很菜,今天先这样了,明天再来吧!

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧