精华内容
下载资源
问答
  • 我们知道在js中默认提供了sort函数,但是这个函数默认是按照数组内容的ascii码升序进行排列的,如果我们要对二维数组排序要如何做呢?在php中是有multi_sort函数可供调用的,但是在js中似乎没有这种函数,但是没关系...
  • 主要介绍了C#实现对二维数组排序的方法,实例分析了C#数组遍历与排序的相关技巧,需要的朋友可以参考下
  • 主要介绍了C#实现的二维数组排序算法,涉及C#针对二维数组的遍历、判断、排序等相关操作技巧,需要的朋友可以参考下
  • 二维数组排序

    2013-09-29 17:01:09
    // 二维数组冒泡排序 public static void main(String[] args) { int i=0, j=0, temp = 0; int[][] nums1 = { { 34, 1, 22, 5 }, { 28, 98, 15, 32 }, { 33, -5, 17, 41 } }; int rows = nums1.length; //二维...
  • Labview二维数组排序

    2014-08-16 11:07:33
    不要看分数高,这个程序绝对可以对得起大家的分数。这个楼主的研究哈!反正下了评价后分数可以返还的................
  • 二维数组指定的键名排序,首先大家想到的是array_multisort函数,关于array_multisort的用法我之前也写了一篇废话不多言,我们看个实例: <?php $data = array( 1001 => array( 'age' => 22, 'name' => '鸠...
  • 思路以及注意点、说明我都加在了代码旁边的注释里,好好悟悟!
  • Java二维数组排序

    万次阅读 2019-06-29 15:46:12
    Java二维数组排序

    Java二维数组排序

    Java二维数组排序

    关于Java二维数组的排序方法之一是把二维数组放进一维数组然后试用版Arrays.sort();进行排序,排序结束后再把一维数组内容重新写入二维数组内,代码实现如下:

    为了方便,我在这里使用了随机数生成方法Math.random()进行随机数生成,依次写入二维数组内:

    import java.util.*;
    public class P11{
    	public static void main(String[] args){
    		int[][] arr=new int[5][5];
    		for(int i=0;i<arr.length;i++){
    			for (int j=0;j<arr[i].length;j++){//生成随机数【100-1000】
    				arr[i][j]=(int)(Math.random()*(1000-100+1)+100);
    			}
    		}
    		for(int i=0;i<arr.length;i++){
    			System.out.println(Arrays.toString(arr[i]));
    		}
    		System.out.println();
    		for(int i=0;i<arr.length;i++){
    			Arrays.sort(arr[i]);
    		}
    		for(int i=0;i<arr.length;i++){
    			System.out.println(Arrays.toString(arr[i]));
    		}
    		int[] temp=new int[25];
    		int k=0;
    		for(int i=0;i<arr.length;i++){
    			for(int j=0;j<arr[i].length;j++){
    				temp[k]=arr[i][j];
    				k++;
    			}
    		}
    		System.out.println();
    		for(int x:temp){
    			System.out.print(x+" ");
    		}
    		Arrays.sort(temp);
    		System.out.println();
    		for(int x:temp){
    			System.out.print(x+" ");
    		}
    		k=-1;
    		for(int i=0;i<arr.length;i++){
    			for(int j=0;j<arr[i].length;j++){
    				k++;
    				arr[i][j]=temp[k];
    			}
    		}
    		System.out.println();
    		System.out.println();
    		for(int i=0;i<arr.length;i++){
    			System.out.println(Arrays.toString(arr[i]));
    		}
    	}
    }
    

    因为使用了随机数生成的数组内容,所以每次运行数组内容都不尽相同,本次运行结果如下:

    排序结果

    展开全文
  • 主要介绍了Python实现二维数组按照某行或列排序的方法,结合具体实例形式分析了Python使用numpy模块的lexsort方法针对二维数组进行排序的常用操作技巧,需要的朋友可以参考下
  • 二维数组排序.vi
  • 本篇主要是对js二维数组排序的简单示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
  • 易语言-json_ksort 二维数组键值排序源码
  • 常用的系统函数有sort、asort、arsort、ksort、krsort等等,这里我主要说下对二维数组排序,两种方法: 一、用PHP自带array_multisort函数排序 复制代码 代码如下:<?php  $data = array(); $da
  • 运用java 实现二维数组排序 (排序要求为‘基于第一个元素排序’组合不变) 三种排序方法分别为: 选择排序,插入排序和排列排序; //选择排序 public class Sort { public static void main(String[] args) { int...

    运用java 实现二维数组排序

    (排序要求为‘基于第一个元素排序’组合不变)
    三种排序方法分别为:
    选择排序,插入排序和排列排序;

    //选择排序
    public class Sort {
        public static void main(String[] args) {
            int[][] testB = { { 71, 2 }, { 64, 8 }, { 31, 56 }, { 98, 1 }, { 3, 6 }, { 59, 837 }, { 49, 58 }, { 61, 8 } };
            System.out.println("交换之前:");
            for (int i = 0; i < testB.length; i++) {
                for (int j = 0; j < testB[i].length; j++) {
                    System.out.print(testB[i][j] + " ");
                }
                System.out.println();
            }
            //选择排序的优化
            for(int i = 0; i < testB.length - 1; i++) {// 做第i趟排序
                int k = i;
                for(int j = k + 1; j < testB.length; j++){// 选最小的记录
                    if(testB[j][0] < testB[k][0]){
                        k = j; //记下目前找到的最小值所在的位置
                    }
                }
                //在内层循环结束,也就是找到本轮循环的最小的数以后,再进行交换
                if(i != k){  //交换a[i]和a[k]
                    int temp = testB[i][0];
                    testB[i][0] = testB[k][0];
                    testB[k][0] = temp;
                    int temp1 =testB[i][1];
                    testB[i][1] = testB[k][1];
                    testB[k][1] = temp1;
                }
    
            }
            System.out.println();
            System.out.println("交换后:");
            for (int i = 0; i < testB.length; i++) {
                for (int j = 0; j < testB[i].length; j++) {
                    System.out.print(testB[i][j] + " ");
                }
                System.out.println();
            }
    
    }}
    

    插入排序:是指在待排序的元素中,假设前面n-1(其中n>=2)个数已经是排好顺序的,现将第n个数插到前面已经排好的序列中,然后找到合适自己的位置,使得插入第n个数的这个序列也是排好顺序的。按照此法对所有元素进行插入,直到整个序列排为有序的过程

    import java.util.Arrays;
    //直接插入排序
    public class Sort {
        public static void insertSort(int[][] array) {
            int j = 0;
            for (int i = 1; i < 8; i++) {
                int tmp = array[i][0];
                int temp1=array[i][1];
                for (j = i - 1; j >= 0; j--) {
    
                    if (tmp < array[j][0]) {
                        array[j + 1][0] = array[j][0];
                        array[j+1][1]=array[j][1];
                    } else {
                        break;
                    }
                }
                array[j + 1][0] = tmp;
                array[j+1][1]=temp1;
            }
        }
    
        public static void main(String[] args) {
            int[][] testB = { { 71, 2 }, { 64, 8 }, { 31, 56 }, { 98, 1 }, { 3, 6 }, { 59, 837 }, { 49, 58 }, { 61, 8 } };
            System.out.println("排序后为:");
            insertSort(testB);
            for (int i = 0; i < testB.length; i++) {
                for (int j = 0; j < testB[i].length; j++) {
                    System.out.print(testB[i][j] + " ");
                }
                System.out.println();
            }
        }
    }
    

    排列排序(rank sort):

    public class Rank_Sort {
        public static void main(String[] args) {    
            int[][] testB = { { 71, 2 }, { 64, 8 }, { 31, 56 }, { 98, 1 }, { 3, 6 }, { 59, 837 }, { 49, 58 }, { 61, 8 } };
                    
            //打印初始二维数组
                    System.out.println("排序前:");
            for (int i = 0; i < testB.length; i++) {
                for (int j = 0; j < testB[j].length; j++) {
                    System.out.print(testB[i][j] + " ");
                }
                System.out.println();
            }
    
            testB = RankSortArray(testB);
    
            System.out.println("排序后:");
            // print the finished two-dimentional array;
            for (int i = 0; i < testB.length; i++) {
                for (int j = 0; j < testB[j].length; j++) {
                    System.out.print(testB[i][j] + " ");
                }
                System.out.println();
            }
    
        }
        
        public static int[][] RankSortArray(int[][] a) {
            int[][] arr = new int[a.length][a[0].length];//定义了一个新数组作为排序数组
            for (int i = 0; i < a.length; i++) {
                int index = 0; //定义了一个索引变量,它是new中整数的第一个索引
    
    //阵列
    
               /*
    
    *查找小于[i]的整数,其中的个数是第一个整数
    
    *新数组中[i][]的索引
    
    */
                for (int j = 0; j < a.length; j++) {
                    if (a[i][0] > a[j][0]) {
                        index++;
                    }
                }
    
                for (int k = 0; k < 2; k++) {
                    arr[index][k] = a[i][k];
                }
            }
    
           /*
    
    *为了避免有许多相同的第一个值,我们用一种
    
    方法,主要思想是:1:如果有一个二维数组的第一个值
    
    为0(从arr[][]的第二个值开始),arr[i][0]必须等于
    
    arr[i-1][0];2:我们遍历a[][],找到a[][0]==arr[i][0],让
    
    arr[i][1]=a[][1];3:我们创建一个新的变量数来计算
    
    乘以a[][0]==arr[i][0]。
    
    */
            int number = 0;
            for (int i = 1; i < arr.length; i++) {
                if (arr[i][0] == 0) {
                    arr[i][0] = arr[i - 1][0];
                    if (number != 0) {
                        number = 1 - i;
                    }
                    for (int j = a.length - 1; j >= 0; j--) {
                        if (arr[i][0] == a[j][0]) {
                            number++;
                            if (number > 1) {
                                arr[i][1] = a[j][1];
                                break;
                            }
                        }
                    }
    
                }
            }
    
            return arr;
        }
    }
    
    展开全文
  • 主要介绍了php自定义函数实现二维数组排序功能,涉及php针对数组的判断、遍历、转换、排序等相关操作技巧,需要的朋友可以参考下
  • VB.NET二维数组快速排序(更新) 'OldArrays(),为排序二维数组;NewArrays(),为存放结果数组,SortColumnsOrOrders(),传递排序参数数组,偶数个为排序列号,奇数为升降序,0为升序,1为降序;FieldRow,是否有字段行...
  • java 二维数组排序

    2021-04-18 17:23:49
    排序规则: 先按数组的第一个元素进行升序排序,若第一个元素相等,则按照第个元素进行升序排序。 使用API:Arrays.sort()(T[] a, Comparator<? super T> c),该API根据给定的比较器(设定排序方式)对指定的...

    二维数组排序

    ① 实现Comparator接口 :匿名内部类实现

    初始化数组int [][]arr = new int [n][2];

    排序规则: 对于n行两列的元素,先按数组的第一列进行升序排序,若某两行第一列相等,则按照第二列进一步排序。

    使用APIArrays.sort()(T[] a, Comparator<? super T> c),该API根据给定的比较器对指定的数组进行排序。

    compare 方法和sort 方法:compare方法返回int型数据,如果返回值大于0,表示需要交换两个元素;返回值小于0表示顺序正确;返回值等于0表示两个数相等。

    代码实现

    Arrays.sort(arr, new Comparator<int[]>() {    // 匿名内部类
    	@Override
    	public int compare(int[] e1, int[] e2) {
    		// 如果第一列元素相等,则比较第二列元素
    		if (e1[0]==e2[0]) return e1[1]-e2[1];   // e1[1]-e2[1]表示对于第二列元素进行升序排序
    		return e1[0]-e2[0];                     // e1[0]-e2[0]表示对于第一列元素进行升序排序
    	}
    });
    

    ② lambda表达式实现

    法①使用匿名内部类实现comparator接口,同样也可以使用lambda表达式实现,代码如下:

    // 仅按第一列元素升序排序
    Arrays.sort(arr, (e1, e2) -> (e1[0] - e2[0]));   // "->"lambda表达式符号,其将参数与实现隔开。
    
    // 先按第一列元素升序排序,如果第一列相等再按第二列元素升序;
    Arrays.sort(arr, (e1,e2)->(e1[0]==e2[0]?(e1[1]-e2[1]):(e1[0]-e2[0])));
    

    二维数组翻转90度

    1. 介绍:将给定二维数组翻转90度

    2. 示例:[[1,2,3],[4,5,6],[7,8,9]]] -> [[7,4,1],[8,5,2],[9,6,3]]
      算法(空间复杂度为常数):
      ①:首先按照对角线进行交换,然后上下交换;

      int[][] matrix = new int[][]{{1,2,3}, {4,5,6}, {7,8,9}};
      int len = matrix.length;
      // 按主对角线交换
      for (int i = 0; i < len; i++) {
          for (int j = 0; j < len - i; j++) {
              int temp = matrix[i][j];
              matrix[i][j] = matrix[len-j-1][len-i-1];
              matrix[len-j-1][len-i-1] = temp;
          }
      }
      //上下翻转
      for (int i = 0; i < len/2; i++) {
          for (int j = 0; j < len; j++) {
              int temp = matrix[i][j];
              matrix[i][j] = matrix[len-i-1][j];
              matrix[len-i-1][j] = temp;
          }
      }
      // 翻转后:
      for (int[] ints : matrix) {
          for (int num : ints) {
              System.out.print(num + " ");
          }
          System.out.println();
      }
      

      ②:按照斜对角线交换,然后左右交换;

      //斜对角线翻转
      for(int i = 0; i < len; i ++){
          for(int j = i; j < len; j ++){
              int temp = matrix[i][j];
              matrix[i][j] = matrix[j][i];
              matrix[j][i] = temp;
          }
      }
      //左右翻转
      for(int i = 0; i < len; i ++){
          for(int j = 0; j < len/2; j ++){
              int temp = matrix[i][j];
              matrix[i][j] = matrix[i][len-j-1];
              matrix[i][len-j-1] = temp;
          }
      }
      
      // 翻转后:
      for (int[] ints : matrix) {
          for (int num : ints) {
              System.out.print(num + " ");
          }
          System.out.println();
      }
      

    参考

    https://www.apiref.com/java13/java.base/java/util/Arrays.html#sort(T[],java.util.Comparator)

    展开全文
  • 主要介绍了php 二维数组时间排序实现代码,需要的朋友可以参考下
  • 本篇文章是对PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数进行了详细的分析介绍,需要的朋友参考下
  • vba二维数组排序及转为一维数组

    千次阅读 2020-09-03 23:02:34
    = arr(i, 1): arr(j, 2) = arr(i, 2) arr(i, 1) = temp1: arr(i, 2) = temp2 End If Next arr(i, 2) = Format(arr(i, 2), "0.00") Next '转一维数组 temp1 = Excel.WorksheetFunction.Transpose(Excel....
    Option Explicit
    
    Sub test1()
        Dim sht
        Set sht = ActiveSheet
        Debug.Print GetDataXz(sht)
    End Sub
    
    Function GetDataXz(sht)
    
        Dim arr(1 To 8, 1 To 2), i, j, temp1, temp2, content
        '小组
        For i = 1 To 8
            arr(i, 1) = "'" & sht.Cells(i + 2, 1) & "'"
            arr(i, 2) = Round(sht.Cells(i + 2, "R") * 100, 2)
        Next
        
        '排序
        For i = 1 To 8
            For j = i + 1 To 8
                If arr(i, 2) < arr(j, 2) Then
                    temp1 = arr(j, 1): temp2 = arr(j, 2)
                    arr(j, 1) = arr(i, 1): arr(j, 2) = arr(i, 2)
                    arr(i, 1) = temp1: arr(i, 2) = temp2
                End If
            Next
            arr(i, 2) = Format(arr(i, 2), "0.00")
        Next
            
        '转一维数组
        temp1 = Excel.WorksheetFunction.Transpose(Excel.WorksheetFunction.Index(arr, 0, 1))
        temp2 = Excel.WorksheetFunction.Transpose(Excel.WorksheetFunction.Index(arr, 0, 2))
        
        content = "    acsp_xz:[" & Join(temp1, ",") & "]," + vbCrLf
        content = content & "    acsp_xz_data:[" & Join(temp2, ",") & "]," + vbCrLf
            
        GetDataXz = content
    End Function
    

     

    展开全文
  • 今天在做下面这道题的时候糊涂了,把二维数组排序做错了。 题目 假设有打乱顺序的一群人站成一个队列,数组 people 表示队列中一些人的属性(不一定按顺序)。每个 people[i] = [hi, ki] 表示第 i 个人的身高为 ...
  • Java完成二维数组排序

    千次阅读 2019-04-11 00:17:43
    二维数组中(每个一维数组的长度相同),按照如下规则排序:每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序 public class HashMapTest { public static void main(String[] args) { ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 121,821
精华内容 48,728
关键字:

二维数组排序