精华内容
下载资源
问答
  • 对二维数组进行排序

    千次阅读 2018-06-06 14:16:13
    /*** 对二维数组进行排序* @access public* @param array $list 对二维数组* @param string $field 排序的键名* @param string $sortby 排序类型 (asc正向排序 desc逆向排序 nat自然排序)* @return array*/ ...

    /**
     * 对二维数组进行排序
     * @access public
     * @param array $list 对二维数组
     * @param string $field 排序的键名
     * @param string $sortby 排序类型 (asc正向排序 desc逆向排序 nat自然排序)
     * @return array
     */

        private function list_sort_by($list, $field, $sortby = 'asc'){
                if (is_array($list)){
                    $refer = $resultSet = array();
                    foreach ($list as $i => $data){
                        $refer[$i] = &$data[$field];
                    }
                    switch ($sortby){
                        case 'asc': // 正向排序
                            asort($refer);
                            break;
                        case 'desc': // 逆向排序
                            arsort($refer);
                            break;
                        case 'nat': // 自然排序
                            natcasesort($refer);
                            break;
                    }
                    foreach ($refer as $key => $val){
                        $resultSet[] = &$list[$key];
                    }
                    return $resultSet;
                }
            return false;
        }


    $new_list = list_sort_by($list, 'class', 'asc');//按照数组里的class进行排序
    echo '<pre>';//原样输出数组
    print_r($new_list);
    echo '<pre>';

    展开全文
  • ** Java使用sort方法二维数组进行...这里我们要实现对二维数组排序,排序准则是二维数组子数组(一维)内部按照字典序排序,数组间按照数组首元从小到大进行排序,如有相同,继续比较下一个元素。 因此我们需要重写s

    **
    sort方法的参数列表除了需要排序的数组以外,还有一个comparator参数,用于指定排序的准则,在对一维数据进行排序时,使用默认的排序准则,因此缺省不写。但是对二维数组进行排序时默认的准则便不再适用了。(这里吹一波C++的sort函数,一维数组二维数组都可以直接排序,不要太方便)。
    这里我们要实现对二维数组排序,排序准则是二维数组子数组(一维)内部按照字典序排序,数组间按照数组首元从小到大进行排序,如有相同,继续比较下一个元素。
    因此我们需要重写sort方法内部的comparator接口下的compare方法,以定义我们的排序规则。参照官方文档:

    在这里插入图片描述
    总结以下官方文档的意思,对于compare方法的两个参数o1,o2,o1<o2,返回一个负值;o1>o2,返回一个正值;o1==o2,返回。这实际上实现了数组从小到大的排序。我们在这里重写compare方法:

        int[][] nums={{2,1,3,4},{1,2,4,8},{5,1,2,8},{1,2,3,5}};
        Arrays.sort(nums, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                for(int i=0;i<o1.length;++i)
                {
                    if(o1[i]<o2[i])
                        return -1;
                    else if(o1[i]>o2[i])
                        return 1;
                    else
                        continue;
                }
                return 0;
            }
        });
    
    

    输出结果:
    实现了按照字典序对二维数组的排序
    此外对于对象数组,我们也可以通过重写comparator接口下的compare方法定义排序准则,进行排序。

    展开全文
  • 用sort方法对二维数组进行排序

    千次阅读 2020-03-06 12:00:03
    用sort方法对二维数组进行排序 我解决二维数组用sort方法排序的途径是将二维数组转化为一个一维数组,再用Arrays.sort(array)排序一维数组,然后将一维数组重新赋值给二维数组 import java.util.Arrays; public ...

    用sort方法对二维数组进行排序

    我解决二维数组用sort方法排序的途径是将二维数组转化为一个一维数组,再用Arrays.sort(array)排序一维数组,然后将一维数组重新赋值给二维数组

    import java.util.Arrays;
    public class arrays { 
        public static void main(String[] args) {
    	    int[][] tDarray=new int[5][5];//{{2,3,4,5,6},{1,2,3,4,5,},{1,2,3,4,5,},{5,6,7,8,9},{11,23,41,12,32}};
    	        //二维数组初始化
    	        for (int i=0;i<tDarray.length;i++){
    	            for (int j=0;j<tDarray[i].length;j++){
    	                tDarray[i][j]=(int)(Math.random()*100);
    	            }
    	        }
    	        //打印下初始化后的二维数组,同时获取二维数组的长度k,
    	        //这里也可以不打印,直接通过双层foreach获取长度k
            int k=0;
            for (int[] i:tDarray
            ) {
                for (int j:i
                ) {
                    System.out.print(j+"  ");
                    k++;
                }
                System.out.println();
            }
            int[] a=new int[k];
           
            k=0;//这里k的含义不是二维数组的长度,而是一维数组的下标。
            //将二维数组转化为一维数组
            for (int[] i:tDarray
                 ) {
                for (int j:i
                     ) {
                    a[k]=j;
                    k++;
                }
            }
            
            k=0;//这里k的含义不是二维数组的长度,而是一维数组的下标。
            //通过sort将一维数组进行排序
            Arrays.sort(a);
            //将一维数组的值重新赋值给二维数组
            for(int i=0;i<tDarray.length;i++){
                for (int j=0;j<tDarray[i].length;j++){
                    tDarray[i][j]=a[k];
                    k++;
                }
            }
            //遍历排序后的二维数组
            for (int[] i:tDarray
            ) {
                for (int j:i
                ) {
                    System.out.print(j+"  ");
                }
                System.out.println();
            }
    	}
    }
    
    展开全文
  • 如何用Arrays.sort对二维数组进行排序

    千次阅读 2019-08-30 18:44:54
    如何用Arrays.sort对二维数组进行排序 假如有一个二维数组是nums = [[5, 0], [4, 1], [6, 2]],这里面的每一个一维数组的第一个元素是值,第二个元素是序号,我想要排序的结果是nums = [[4, 1], [5, 0], [6, 2]],那...

    如何用Arrays.sort对二维数组进行排序

    假如有一个二维数组是nums = [[5, 0], [4, 1], [6, 2]],这里面的每一个一维数组的第一个元素是值,第二个元素是序号,我想要排序的结果是nums = [[4, 1], [5, 0], [6, 2]],那可以这样做

        public static void main(String[] args) {
            int[][] nums = {{5, 0}, {4, 1}, {6, 2}};
            //重写Comparator接口里面的compare方法,用Lambda表达式写比较简洁
            Arrays.sort(nums, (o1, o2) -> o1[0] - o2[0]);
            for (int i = 0; i < nums.length; i++) {
                System.out.println("值:" + nums[i][0] + "   序号:" + nums[i][1]);
            }
            /*
                值:4   序号:1
                值:5   序号:0
                值:6   序号:2
             */
        }
    
    展开全文
  • 如何对二维数组进行排序

    千次阅读 2017-09-29 18:32:58
    最近做题时发现有些任务需要将二维数组按照某一列进行排序 但JDK里并没有直接提供这一排序的方法 考虑自己重新写实在太麻烦(还不一定正确/高效) 百度了一番: //...
  • 用qsort对二维数组进行排序

    万次阅读 2017-11-16 09:22:06
    对于malloc动态申请的多维数组(指针...首先,通过malloc指针数组进行分配: 先分配一个指向元素为int 的一维数组,所以数组类型为int *; 然后,针对每一个数组里的int *型指针,分配一个一维数组,数组类型为in
  • * 对二维数组进行排序 * @param $array * @param $keyid 排序的键值 * @param $order 排序方式 'asc':升序 'desc':降序 * @param $type 键值类型 'number':数字 'string':字符串 */ public function sort_ar
  • Arrays.sort()对二维数组进行排序

    千次阅读 2020-02-02 10:54:42
    java中的Arrays.sort()方法在api中接受的单个参数只能是一维数组,那么我们想要对二维数组进行处理该怎么办?重新比较器即可,代码如下。 int[][] intervals = { { 2, 3 }, { 4, 5 }, { 6, 7 }, { 8, 9 }, { 1, 10 }...
  • //定义一个二维数组,其中所包含的一维数组具有两个元素 对于一个已定义的二位数组a经行如下规则排序,首先按照每一个对应的一维数组第一个元素进行升序排序(即a[][0]),若第一个元素相等,则按照第二个元素进行升序...
  • array_multisort(array&amp;$array1 [,mixed $array1_sort_order=SORT_...多个数组或多维数组进行排序。$array1要排序数组,$array_sort_order前面数组参数要排列的顺序,默认升序,$array1_sort_flags为$a...
  • &lt;?php /** * @author Yanyuxuan * @email 329944908@qq.com * @DateTime 2018-05-03 * @param [array] $arr [要排序数组] * @param [string] $row [排序的列] * @param string ...
  • 1、复合排序 直接用numpy的lexsort就可以 import numpy as np data = np.array([[1,2,3,4,5], [1,2,3,6,7], [2,3,4,5,7], [3,4,5,6,7], [4,5,6,7,8]]) idex=np.lexsort([-1*data[:,2], data[:,1], data[:,0]])...
  • 对于熟悉二维数组的人,都知道如果对于二维数组进行操作的话,最方便的就是利指针。 代码: #include #include #include using namespace std; bool cmp(int *p, int *q) { if(p[0] == q[0]) { if(p[1]...
  • //把二维数组转到一维数组copy中 for(int i=0;i;i++){ System.arraycopy(arr[i], 0, copy, i*5, 5); } printArrayB(copy); //给一维数组copy排序 Arrays.sort(copy); //打印...
  • 请问怎么用sort对二维数组进行排序 这个代码哪里出了问题?? #include<iostream> #include<cstdio> #include<algorithm> using namespace std; bool cmp(int *p,int *q){ return p...
  • 二维数组进行排序

    千次阅读 2018-10-16 14:18:16
    * 二维数组排序 * @param string $arr 二维数组 * @param string $keys 排序键值 * @param string $type 排序方式 asc正序 desc倒 */ function array_sort($arr, $keys, $type = 'asc') { $keysvalue = $new_...
  • 本文采用冒泡排序对二维数组进行排序 代码内容如下 using System; namespace experment4 { class Program { private static int result; private static int result1; static void Main(string[] args) ...
  • 二维数组排序、去除二维数组中的重复项、二维数组的某一字段求和
  • C++二维数组sort排序问题

    万次阅读 多人点赞 2018-02-08 20:08:16
    以往遇到行排列问题(按每行的字典序排序)的时候,总是使用结构体来进行排序,但是如何使用二维数组来达到同样的效果呢?实验内容:利用二维数组进行“三级排序”测试1:使用c++内置的普通型二维数组#include &...
  • //定义一个二维数组,其中所包含的一维数组具有两个元素 对于一个已定义的二位数组a经行如下规则排序,首先按照每一个对应的一维数组第一个元素进行升序排序(即a[][0]),若第一个元素相等,则按照第二个元素进行升序...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 117,500
精华内容 47,000
关键字:

对二维数组进行排序