精华内容
下载资源
问答
  • 思路:新建一个一维数组将二维数组的数据按行存入,然后对一维数组排序,最后将排过序的一维数组按序存入二维数组 实现原理为一维数组排序,此处不做展示 方法二: 思路:(我使用的是选择排序,每次循环确定一...

    如题:

    java不像c语言,没有指针,所以没办法通过指针取值进行排序。那么java的二维数组是怎么排序的呢?

    解决方法如下:

    方法一:

    思路:新建一个一维数组将二维数组的数据按行存入,然后对一维数组排序,最后将排过序的一维数组按序存入二维数组

               实现原理为一维数组排序,此处不做展示

    方法二:

    思路:(我使用的是选择排序,每次循环确定一个位置,下次循环就少循环一个数)

    1. 先获取二维数组的元素个数,若二维数组不为正则数组,可通过遍历获得元素个数。
    2. 以元素个数作为总循环次数作为最外侧循环(循环①),将每个位置的数都进行排序
    3. 循环①内套循环,外循环的每次迭代都将改变内循环的循环开始值,即外循环第一次循环,内循环从数组第一个位置开始,外循环第二次循环,内循环从数组的第二个位置开始
    4. 内循环每次开始都将循环开始值设为最小(大)数,然后将数组每个数取出来与这个最小(大)数比较,若最小数小于这个数,则将最小(大)数的索引改为这个数的索引
    5. 将最小(大)数与循环开始值 进行值得交换(外循环中进行)
    6. 循环结束,输出数组

    代码实现:

    public static void main(String[] args) {
    
            // 初始化数组
            int[][] arr = {{20,10,50},
                           {40,30,80},
                           {15,100}};
            int temp = 0;// 中间变量
            int length = 0;// 数组元素个数
            int min1 = 0;// 最小值的行索引
            int min2 = 0;// 最小值的列索引
            int x = 0;// 循环的初始值的行索引
            int y = 0;// 循环的初始值的列索引
            // 求出数组个数
            for (int i = 0; i < arr.length; i++) {// 外部循环为行
                for (int j = 0; j < arr[i].length; j++) {// 内部循环为列
                    length = length + 1;
                }
            }
            // 将arr[min1][min2] 设为最小值,让每个数跟arr[min1][min2]比较
            for (int k = 0; k < length; k++) {
    
                if (k < 3){
                    x = 0;
                    y = k;
                } else if (k > 2 && k < 6) {
                    x = 1;
                    y = k%3;
                } else {
                    x = 2;
                    y = k%3;
                }
                /*
                       k = 0  x = 0 y = 0
                       k = 1  x = 0 y = 1
                       k = 2  x = 0 y = 2
                       k = 3  x = 1 y = 0
                       k = 4  x = 1 y = 1
                       k = 5  x = 1 y = 2
                       k = 6  x = 2 y = 0
                       k = 7  x = 2 y = 1
                */
                min1 = x;
                min2 = y;
                // 取最小值
                for (int i = x; i < arr.length; i++) {// 外部循环为行
                    if (i == x) {// 如果i=x  表明这是循环开始的第一行 所以j要从y开始循环
                        for (int j = y; j < arr[i].length; j++) {// 内部循环为列
                            if (arr[min1][min2] > arr[i][j]) {// 如果当前设置的最小值大于arr[i][j] 则将新的最小值设置为[i][j]
                                min1 = i;
                                min2 = j;// 获取新的最小值
                            }
                        }
                    } else {// 若 i != x 表明这是循环的第二行表明 要从0开始
                        for (int j = 0; j < arr[i].length; j++) {
                            if (arr[min1][min2] > arr[i][j]) {
                                min1 = i;
                                min2 = j;// 获取新的最小值
                            }
                        }
                    }
                }
                // 将第[x][y]位置的值与最小值交换
                temp = arr[x][y];
                arr[x][y] = arr[min1][min2];
                arr[min1][min2] = temp;
            }
    
            // 输出数组
            for (int i = 0; i < arr.length; i++) {// 外部循环为行
                for (int j = 0; j < arr[i].length; j++) {// 内部循环为列
                    System.out.print(arr[i][j] + " ");
                }
                System.out.println();
            }
        }

     

    展开全文
  • 而如果list是一个二维数组,也就是list 的list,想按照第2列排序怎么做?就是说,list是以下的矩阵形式:list[0]: [4,2]list[1]: [3,1]list[2]: [5,0]list[3]: [1,6]注意到sort自己的参数就有提及:list.sort(cmp=...

    list 的sort方法是将list里面的数据直接排序,排序后,list的数据顺序会变化。

    而如果list是一个二维数组,也就是list 的list,想按照第2列排序,怎么做?就是说,list是以下的矩阵形式:

    list[0]: [4,2]

    list[1]: [3,1]

    list[2]: [5,0]

    list[3]: [1,6]

    注意到sort自己的参数就有提及:

    list.sort(cmp=None, key=None, reverse=False)

    参数定义

    key定义按照哪一个元素排序。如果对于列表中的元素,可以选择其他的跟元素list[i]有关的值,则key可以是一个作用于list[i]的函数。比如:

    def take2(elem):

    return elem[1]

    list1 =[(4,2),(3,1),(5,0), (1,6)]

    list1.sort(key = take2)

    print(list1)

    >>[(5, 0), (3, 1), (4, 2), (1, 6)]

    这里,list[i]是一个tuple,elem[1]返回第二个元素。则sort会按照第2个元素来排序,是不是很方便啊?

    python 2中,cmp是一个callable的函数。如果用个lambda算子来写最基础的升序排序,就是:

    lambda x,y: x-y

    这里,x-y在x>y时返回正值,cmp是正返回值时,交换两个元素,则最后就是一个升序排序。

    如果这个函数一直返回True,则不排序,list还是原list。

    但是注意,python 3里面取消了sort的cmp参数了。它的定义是:

    L.sort(key=None, reverse=False) -> None

    展开全文
  • 而如果list是一个二维数组,也就是list 的list,想按照第2列排序怎么做?就是说,list是以下的矩阵形式: list[0]: [4,2] list[1]: [3,1] list[2]: [5,0] list[3]: [1,6] 注意到sort自己的参数就有提及: ...

    list 的sort方法是将list里面的数据直接排序,排序后,list的数据顺序会变化。

    而如果list是一个二维数组,也就是list 的list,想按照第2列排序,怎么做?就是说,list是以下的矩阵形式:

    list[0]: [4,2]
    list[1]: [3,1]
    list[2]: [5,0]
    list[3]: [1,6]

    注意到sort自己的参数就有提及:

    list.sort(cmp=None, key=None, reverse=False)

    参数定义

    key定义按照哪一个元素排序。如果对于列表中的元素,可以选择其他的跟元素list[i]有关的值,则key可以是一个作用于list[i]的函数。比如:

    def take2(elem):
        return elem[1]
    list1 =[(4,2),(3,1),(5,0), (1,6)]
    list1.sort(key = take2)
    
    print(list1)
    >>[(5, 0), (3, 1), (4, 2), (1, 6)]

    这里,list[i]是一个tuple,elem[1]返回第二个元素。则sort会按照第2个元素来排序,是不是很方便啊?

    python 2中,cmp是一个callable的函数。如果用个lambda算子来写最基础的升序排序,就是:

    lambda x,y: x-y

    这里,x-y在x>y时返回正值,cmp是正返回值时,交换两个元素,则最后就是一个升序排序。

    如果这个函数一直返回True,则不排序,list还是原list。

    但是注意,python 3里面取消了sort的cmp参数了。它的定义是:

    L.sort(key=None, reverse=False) -> None

     

    展开全文
  • 1.数据库里面原始数据,大家可以看到...那么我想他按顺序进行排序怎么做呢volume | edition-------+--------67 | 286 | 185 | 698 | 286 | 667 | 7 2.php 查出来或模拟的数据$data[] = array('volume' => 67, ...
    1.数据库里面原始数据,大家可以看到两列中其实是乱的。那么我想将他按顺序进行排序怎么做呢
    volume | edition
    -------+--------
    67 | 2
    86 | 1
    85 | 6
    98 | 2
    86 | 6
    67 | 7

    2.php 查出来或模拟的数据
    $data[] = array('volume' => 67, 'edition' => 2);
    $data[] = array('volume' => 86, 'edition' => 1);
    $data[] = array('volume' => 85, 'edition' => 6);
    $data[] = array('volume' => 98, 'edition' => 2);
    $data[] = array('volume' => 86, 'edition' => 6);
    $data[] = array('volume' => 67, 'edition' => 7);


    3.进行排序

    foreach ($data as $key => $row) {
    	$volume[$key]  = $row['volume'];
    	$edition[$key] = $row['edition'];
    }
    //将数据根据 volume 降序排列,根据 edition 升序排列
    //把 $data 作为最后一个参数,以通用键排序 array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
    print_r($data);

     

    4.排序结果
    volume | edition
    -------+--------
    98 | 2
    86 | 1
    86 | 6
    85 | 6
    67 | 2
    67 | 7
    怎么样,看完是不是感觉很强大,其实这个函数还有很多增强型的应用,大家可以翻看一下手册。。



    参数描述
    array1 必需。规定数组。
    sorting order

    可选。规定排列顺序。可能的值:

    • SORT_ASC - 默认。按升序排列 (A-Z)。
    • SORT_DESC - 按降序排列 (Z-A)。
    sorting type

    可选。规定排序类型。可能的值:

    • SORT_REGULAR - 默认。把每一项按常规顺序排列(Standard ASCII,不改变类型)。
    • SORT_NUMERIC - 把每一项作为数字来处理。
    • SORT_STRING - 把每一项作为字符串来处理。
    • SORT_LOCALE_STRING - 把每一项作为字符串来处理,基于当前区域设置(可通过 setlocale() 进行更改)。
    • SORT_NATURAL - 把每一项作为字符串来处理,使用类似 natsort() 的自然排序。
    • SORT_FLAG_CASE - 可以结合(按位或)SORT_STRING 或 SORT_NATURAL 对字符串进行排序,不区分大小写。
    array2 可选。规定数组。
    array3

    可选。规定数组。

     

     

    转载于:https://www.cnblogs.com/5byt/p/6007779.html

    展开全文
  • arrayobj.sort(sortfunction); 参数:sortFunction 可选项。是用来确定元素顺序的函数的名称。... 以上的方法在一排序还是很方便的,但像SQL语句中的ORDER BY 一样的多键值排序怎么做呢? 多维
  • 之前面试,一位大牛问到,怎么得到一维数组里面第大的数组, 我脑中想到的是冒泡排序,他说不能用冒泡排序, 然后我想到还有数组函数,大牛说不能用数组函数, 我就茫然了,大牛告诉了我两个方法,现在我两种方法整理一下...
  • 题目:输入多个城市名字,按升序排序输出 ...2.定义二维数组,存放所有的城市名字符串 3.用选择排序算法,对字符串进行排序,用到stricmp函数 和strcpy函数 #include<stdio.h> #include<strin...
  • /*每个哈夫曼码值及其对应的ASCII码存放在一维数组header[i]中, 且编码表中的下标和ASCII码满足顺序存放关系*/ else header[i].b=0; header[i].parent=-1; //对结点进行初始化 header[i].lch=header[i].rch=...
  • 这样的二维矩形和本身可以用树状数组在给定时间内完成 然而这时空间显然开不下了  那么我们可以用CDQ分治操作离散化 再所有操作按坐标排序 这样保证了在解决较大矩阵问题的时候较小矩阵内的操作已经进行了 ...
  • UVA live 6667 三维严格LIS ...题意: 每个球都有三个属性值x...二维的LIS,第一维排序后,和第一维一样 那么三维的lis怎么做了,我们很容易想到第一维排序后分治的写,分了后, 按照y排序怎么治呢?用树状数组更...
  • 题并不难,但是很多同学可能会想不清楚,就是在输出的时候怎么保证排序后的ASCII码跟自己输入的字符进行对应,起初我也担心过,甚至还想过用二维数组,后来觉得自己真的是多此一举。我们可以用字符转ASCII码,那输出...
  • 看到这道题的时候就想着使用二维数组存放数,先判定能否够得着,然后存入数组中,再排序。 最后计数,但这样写还是错了,不知道该怎么改进,只能看大佬的思路了。 大佬的思路十分的好理解: 1.核心就是用桶排序,先...
  • 其实这个问题其模型等价成一个6x6方阵(或者二维数组排序问题。 无论怎么算,首先肯定要先分六组,自行比赛分前后顺序,进行横向排序。进行6次 然后是对每组的第一进行比赛,得到纵向排序。(这里用来区分组别...
  • 首先利用h[i]和k[i]数组排序,那么怎么利用呢?可以以h[i]为主,k[i]为辅,即按照身高从高往低的顺序排,如果两者身高相同,则按照前面比他高的人数k[i]排,越少越靠前。 然后再重新定义一个二维数组,用以存放...
  • 男士和女士对异性好感的排序表抽象成一个二维数组MP和WP 2.创建两个数组用来记录男士和女士是否单身,其中索引表示第几位男士,存储的值表示是否脱单。例如:isManFree[0] = True # 表示第0位男士还是单身3.设计...
  • 第四周作业

    2019-03-22 16:43:00
    选择排序法,二维数组 7-2 选择法排序 (20 分) 本题要求给定的n个整数从大到小排序后输出。 输入格式: 输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。 输出格式: 在一行...
  • 初始时的时候全部为0,现在需要维护两种操作:命令参数限制内容1 x y A1格子x,y里的数字加上A2 x1 y1 x2 y211输出x1 y1 x2 y2这个矩形内的数字和其中,n题目很恶心难道要动用传说中的动态二维线段树?!真用个像...
  • 4110.圣诞老人的礼物

    2019-10-08 14:49:33
    一开始我是用了一个二维数组 后面就改成了Arraylist 然后进行排序 这道题并不是整箱整箱的拿 ,可以拿箱子的一部分 所以先性价比高的拿出来 import java.util.*; //定义一个礼物类 存放 礼物的value kg and v_k ...
  • poj 2528

    2013-04-04 00:40:18
    我的离散化是参考了网上的一部代码,其实核心是一样的,只是别人用了二维数组,而我用了结构体。首先,开头和结尾存起来,但是在排序时是不分结尾和开始的,所以我们要先标记一下,也就是说尾部用其数组的下标的...
  • 菜鸟成长之路

    2011-01-11 22:17:00
    从键盘上输入三个字符(长度小于80),存入二维数组,然后对其进行排序(由小到大)并按次序输出 自己编写的,调试通过(刚开始写的时候,不知道怎么把字符串存入数组,后来想到了gets()函数,加一个...
  • 图太大了不能用二维数组的邻接表怎么办?该如何遍历与某一结点相连的所有边? 我们围绕这个图进行展开。 设该图的输入如下: /* 1 2 2 3 3 4 1 3 4 1 1 5 4 5 */ 前向星 前向星是一种特殊的边集数组,我们把...
  • 0240. 搜索二维矩阵 II 0279. 完全平方数 0309. 最佳买卖股票时机含冷冻期 0322. 零钱兑换 0328. 奇偶链表 0334. 递增的三元子序列 0337. 打家劫舍 III 0343. 整数拆分 0365. 水壶问题 0378. 有序...
  • ***题目:***输入10个学生5门课的成绩,分别用函数实现下列功能: ①计算每个学生的平均分; ②计算每门课的平均分;...所以我们可以分为5个函数,主函数,然后4个结果的调用函数,定义一个二维数组通过for循环5
  • 数据 (cdq分治)

    2016-03-07 16:55:56
    题意:维护二维平面上的点集,支持插入一个点,查询点集中的点到指定点的最小、最大曼哈顿距离。不强制在线,n,m 考试的时候没怎么动脑子,直接上分象限讨论+线段树套平衡树,花了2h写了7k结果常数太大只得了50分。...
  • def是一个级指针,它指向的是一个一维数组的指针,数组的元素都是float. (2)double*(*gh)[10]; gh是一个指针,它指向一个一维数组,数组元素都是double*. (3)double(*f[10])(); f是一个数组,f有10个元素,元素都是...
  • 6.18 当我向一个接受指针的指针的函数传入二维数组的时候,编译器报错了。 6.19 我怎样编写接受编译时宽度未知的二维数组的函数? 6.20 我怎样在函数参数传递时混用静态和动态多维数组? 数组的大小 6.21 当数组...
  • 如果我指针值设为0,编译器可能会自动它转换为非零的空指针内部表示。 62  5.20 运行时的“null pointer assignment”错误是什么意思?应该怎样捕捉它? 62 第6章 数组和指针 63 数组和指针的基本关系 ...
  • 《你必须知道的495个C语言问题》

    热门讨论 2010-03-20 16:41:18
    这导致空间浪费而且无法与外部数据文件进行“进制”读写。能否关掉填充,或者控制结构域的对齐方式? 27  2.14 为什么sizeof返回的值大于结构大小的期望值,是不是尾部有填充? 28 2.15 如何确定域在结构中的...

空空如也

空空如也

1 2
收藏数 38
精华内容 15
关键字:

怎么将二维数组排序