如何排序二维数组? [英] How to Sort a 2D array?

查看:150
本文介绍了如何排序二维数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要排序二维数组帮助。我有阵列两行

  [5,3,4,1,2]
[10,20,30,40,50]

和我需要排序它看起来是这样的:

  [1,2,3,4,5]
[40,50,20,30,10]

我知道如何做到这一点与冒泡排序,但我需要一些更快的算法,例如快速排序。

下面是我的冒泡排序code

 的for(int i = 0; I<长度为1;我++){
         对于(INT J = 0; J<长度-I-1; J ++){            如果(阵列[0] [J]≥阵列[0] [J + 1]){               为(中间体K = 0; K&2; k ++){
               INT TMP =阵列[K] [J]。
               阵[K] [J] =阵列[K] [J + 1];
               阵[K] [J + 1] = TMP;
               }
           }
       }
    }


解决方案

转二维数组的java多维数组移调

使用 Arrays.sort(T []一,比较和LT ;?超级T> C)其中,比较各行的索引0比较

再次转的结果:

例如

从: [5,3,4,1,2] [10,20,30,40,50]

获得 [5,10] [3,20] [4,30] [1,40] [2,50]

然后将它们整理到 [1,40] [2,50] [3,20] [4,30] [5,10]

然后再调换为: [1,2,3,4,5] [40,50,20,30,10]

或自己实现快速排序。

I need help with sorting 2D array. I've got array with two rows

[5, 3, 4, 1, 2]
[10,20,30,40,50]

and I need to sort it to look like this:

[1, 2, 3, 4, 5]
[40,50,20,30,10]

I know how to do that with bubble sort, but I need some faster algorithm, e.g. quicksort.

Here is my bubble sort code

   for (int i = 0; i < length-1; i++) {
         for (int j = 0; j < length-i-1; j++) { 

            if (array[0][j] > array[0][j+1]) {

               for (int k = 0; k < 2; k++) {
               int tmp = array[k][j];
               array[k][j] = array[k][j+1];
               array[k][j+1]=tmp;
               }
           }
       }
    }

解决方案

transpose the 2D array java multi-dimensional array transposing

use Arrays.sort(T[] a, Comparator<? super T> c) where the comparator compares on index 0 of each row

transpose the result again:

e.g.

from: [5,3,4,1,2] [10,20,30,40,50]

obtain [5, 10] [3, 20] [4, 30] [1, 40] [2, 50]

then sort them to [1, 40] [2, 50] [3, 20] [4, 30] [5, 10]

then transpose again to: [1,2,3,4,5] [40,50,20,30,10]

or implement quicksort by yourself.

这篇关于如何排序二维数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆