# private int array[][] = new int[][] {
# { 12, 34, 68, 32, 9, 12, 545 },
# { 34, 72, 82, 57, 56, 0, 213 },
# { 12, 34, 68, 32, 21, 945, 23 },
# { 91, 10, 3, 2354, 73, 34, 18 },
# { 12, 83, 189, 26, 27, 98, 33 },
# { 47, 23, 889, 24, 899, 23, 657 },
# { 12, 34, 68, 343, 878, 235, 768 },
# { 12, 34, 98, 4, 56, 78, 12},
# { 26, 78, 2365, 78, 34, 256, 873 } };// 要排序的数组
实现对一个二维数组按指定的列集进行排序。要求实现类似sql中order by的功能,移动时,整行移动,不能打乱整行顺序。可将二维数组想象成数据库里的一个表记录集,
然后按指定的列集进行排序,即order by col1,col2。
这是在论坛中看到的一道笔试题,自己写了个又臭又长的code.看得自己都觉得不好意思了,深知自己java基础还很弱。
下面是一个网友的code.很简洁、明了。贴在下面了。
package test;
import java.util.Arrays;
import java.util.Comparator;
public class ArraySort {
public static void sort(int[][] ob, final int[] order) {
Arrays.sort(ob, new Comparator<Object>() {
public int compare(Object o1, Object o2) {
int[] one = (int[]) o1;
int[] two = (int[]) o2;
for (int i = 0; i < order.length; i++) {
int k = order[i];
if (one[k] > two[k]) {
return 1;
} else if (one[k] < two[k]) {
return -1;
} else {
continue; //如果按一条件比较结果相等,就使用第二个条件进行比较。
}
}
return 0;
}
});
}
public static void main(String[] args) {
int array[][] = new int[][] {
{ 12, 34, 68, 32, 9, 12, 545 },
{ 34, 72, 82, 57, 56, 0, 213 },
{ 12, 34, 68, 32, 21, 945, 23 },
{ 91, 10, 3, 2354, 73, 34, 18 },
{ 12, 83, 189, 26, 27, 98, 33 },
{ 47, 23, 889, 24, 899, 23, 657 },
{ 12, 34, 68, 343, 878, 235, 768 },
{ 12, 34, 98, 56, 78, 12, 546 },
{ 26, 78, 2365, 78, 34, 256, 873 } };
sort(array, new int[] {0,1,3});
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.print(array[i][j]);
System.out.print("\t");
}
System.out.println();
}
}
}
分享到:
相关推荐
本篇文章将详细探讨如何在C#中实现对二维数组的排序,特别关注如何基于特定列进行排序。 首先,我们要理解二维数组的基本概念。二维数组可以视为一个表格,其中包含多个行和列,每个元素都有自己的行索引和列索引。...
例如,一个3行4列的整数二维数组可以这样定义:`整数型二维数组 数组名(3, 4)`。 在二维数组的赋值方面,易语言提供了多种方式。最基本的赋值方式是通过索引来操作。索引的格式为 `数组名[行索引, 列索引]`。例如,...
本文实例讲述了Python实现二维数组按照某行或列排序的方法。分享给大家供大家参考,具体如下: lexsort支持对数组按指定行或列的顺序排序;是间接排序,lexsort不修改原数组,返回索引。 (对应lexsort 一维数组的是...
【二维数组基本操作】在本实验中,二维数组被用于实现一些基本的计算任务,如求阶乘和稀疏数组的压缩。二维数组是线性代数中的基本元素,尤其在处理矩阵运算时非常常见。它是一种数据结构,用于存储具有固定大小的...
这个函数允许我们根据一个或多个列的值对整个二维数组进行排序,而且可以指定升序(SORT_ASC)或降序(SORT_DESC)排列。 首先,让我们深入理解 `array_multisort` 的工作原理。此函数接受一到多个数组作为参数,...
例如,假设我们有一个二维数组,每个子数组包含地区信息以及与该地区相关的“人数”和“次数”,我们需要根据这两个字段进行降序排序。首先,我们需要从原始的二维数组中提取这两个字段,然后将它们作为独立的数组...
从给定的文件内容中,我们可以看到一个具体的示例代码,这段代码展示了如何实现根据二维数组中的时间字段进行排序的功能。下面将详细介绍这部分知识点。 自定义函数arraySort()的实现: 1. 函数定义:首先,定义了...
本文实例讲述了PHP实现二维数组按照指定的字段进行排序算法。分享给大家供大家参考,具体如下: 遇到问题:把两个数组用php自带的array_merge()函数合并之后,想按照两个数组中共有的’post_time’字段为新数组进行...
本算法实现了对二维数组的排序,能够根据指定的列索引和排序类型对二维数组进行排序。 知识点1:二维数组的遍历 在C#语言中,二维数组可以使用foreach循环或for循环来遍历。例如,以下代码使用foreach循环来遍历二...
总之,根据Java中任何给定列的值对二维数组进行排序,可以通过利用`Arrays.sort()`函数结合Lambda表达式或自定义Comparator来实现。这种方法不仅适用于基本类型数组,还可以扩展到其他类型的对象数组,只要提供合适...
本文实例讲述了PHP实现二维数组按指定的键名排序的方法。分享给大家供大家参考,具体如下: <?php /*二维数组按指定的键值排序*/ function array_sort($array,$keys,$type='asc'){ if(!isset($array) || !is_...
在PHP中,对二维数组按指定键值key进行排序是一个常见的需求,尤其是对于初学者而言,可能会遇到一些困难。本文将详细介绍如何使用PHP代码实现这一功能。 首先,PHP中有一个内置函数array_multisort(),该函数能够...
2. **排序方式**:二维数组排序通常是指按某一列进行排序。例如,如果数组代表一个表格,我们可以根据第一列的数值对整个数组进行排序。 3. **排序实现**:需要先提取待排序列的值,用一维数组排序方法进行排序,...
在处理二维数组时,如果我们想根据其中的一个或多个键值进行排序,`array_multisort()`可以很好地完成这项工作。 在给定的示例中,我们有一个包含四个元素的二维数组,每个元素都是一个关联数组,包含'id'和'price'...
总的来说,`array_sort()`函数是解决PHP二维数组按指定键排序问题的一个实用工具,尤其适用于那些不能直接通过内置函数解决的复杂排序需求。通过自定义比较逻辑,你可以进一步扩展这个函数,以适应更复杂的排序规则...
二维数组是由多个一维数组组成的,可以想象成一个矩阵或表格,每一行代表一个一维数组,列数则定义了每个一维数组的长度。 在Java中,创建二维数组有多种方式。第一种方式是直接指定行和列的数量,例如`int[][] arr...
- **排序**:对二维数组中的元素进行排序,可能需要自定义比较规则。 - **查找和替换**:在二维数组中查找特定值并进行替换,通常需要嵌套循环。 7. **应用场景** - **矩阵运算**:在数学计算、图形处理等场景中...
总结来说,这个示例展示了如何使用JavaScript对二维数组进行多列排序,包括对指定列进行升序或降序排序,并且可以处理复杂的情况,如数组中存在相等的列值。这个算法对于处理表格数据的排序需求非常实用,尤其是在...