问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何将二维数组排序

发布网友 发布时间:2022-04-18 15:26

我来回答

5个回答

懂视网 时间:2022-04-18 19:47

这篇文章主要介绍了Python实现二维数组按照某行或列排序的方法,结合具体实例形式分析了Python使用numpy模块的lexsort方法针对二维数组进行排序的常用操作技巧,需要的朋友可以参考下

本文实例讲述了Python实现二维数组按照某行或列排序的方法。分享给大家供大家参考,具体如下:

lexsort支持对数组按指定行或列的顺序排序;是间接排序,lexsort不修改原数组,返回索引。

(对应lexsort 一维数组的是argsort a.argsort()这么使用就可以;argsort也不修改原数组, 返回索引)

默认按最后一行元素有小到大排序, 返回最后一行元素排序后索引所在位置。

设数组a, 返回的索引ind,ind返回的是一维数组

对于一维数组, a[ind]就是排序后的数组。

对于二维数组下面会详细举例。

import numpy as np
>>> a
array([[ 2, 7, 4, 2],
 [35, 9, 1, 5],
 [22, 12, 3, 2]])

按最后一列顺序排序

>>> a[np.lexsort(a.T)]
array([[22, 12, 3, 2],
 [ 2, 7, 4, 2],
 [35, 9, 1, 5]])

按最后一列逆序排序

>>>a[np.lexsort(-a.T)]
array([[35, 9, 1, 5],
 [ 2, 7, 4, 2],
 [22, 12, 3, 2]])

按第一列顺序排序

>>> a[np.lexsort(a[:,::-1].T)]
array([[ 2, 7, 4, 2],
 [22, 12, 3, 2],
 [35, 9, 1, 5]])

按最后一行顺序排序

>>> a.T[np.lexsort(a)].T
array([[ 2, 4, 7, 2],
 [ 5, 1, 9, 35],
 [ 2, 3, 12, 22]])

按第一行顺序排序

>>> a.T[np.lexsort(a[::-1,:])].T
array([[ 2, 2, 4, 7],
 [ 5, 35, 1, 9],
 [ 2, 22, 3, 12]])

热心网友 时间:2022-04-18 16:55

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 二维排序
{
class Program
{
static void Main(string[] args)
{
int[,] arr= new int[,] { { 4, 78, 5 }, { 34, 7, 15 }, { 14, 8, 55 },{55,12, 9} };
int i,j,k,l,temp;
for (i=0;i<4;i++)//一维数组内部排序。冒泡。
{
for (j = 0; j < 2; j++)
{
for (k = j; k < 3; k++)
{
if (arr[i, j] < arr[i, k])
{
temp = arr[i, j];
arr[i, j] = arr[i, k];
arr[i, k] = temp;
}
}
}
}
for (i = 0; i < 3; i++)//将有序的一维数组作为元素的一维数组排序。也是冒泡。。
for (j = i; j < 4; j++)
{
k=0;
while ((k < 2) && (arr[i, k] == arr[j, k])) k++;
if (arr[i, k] < arr[j, k])
{
for (l = 0; l < 3; l++)
{
temp = arr[i, l];
arr[i, l] = arr[j, l];
arr[j, l] = temp;
}
}
}
for (i = 0; i < 4; i++)
{
for (j = 0; j < 3; j++)
Console.Write("{0} ", arr[i, j]);
Console.WriteLine();
}
Console.ReadKey();
}
}
}

嘿嘿。。有啥看不懂的可以问我。。

热心网友 时间:2022-04-18 18:13

#include <stdio.h>
#define iline 2//行。fun3()中用
#define irow 8//列。fun3()中用

/***************************
例子中:
以字符数组为例。
以冒泡排序为排序方法。
----************************/

//第一种方法:将二维数组转置到一维数组,再对一维数组排序
void fun1()
{
int i=0,j=0,k=0,t=0;
char a[2][8]={"1354689","3456378"};
char b[2*8];
printf("fun1()运行如下:\n");
//将二维数组转置到一维数组
while(i<2)
{
while(j<8-1)
{
b[k++]=a[i][j];
j++;
}
i++;
j=0;
}

b[k]='\0';//最后一个
puts(b);//先看看是不是成功转置

//以下比较容易理解的冒泡排序,一个个比较,交换。不过效率较低
for(i=0;i<16;i++)
{
for(j=0;j<16;j++)
{
if(b[i]>b[j])//从大到小排序,若要从小到大,你懂的。
{
//交换二者的值
t=b[i];
b[i]=b[j];
b[j]=t;
}

}
}
puts(b);//输出看看结果
}

void fun2()//fun3是fun2的通用版本
{
int i=0,j=0;
char t;
char a[2][8]={"1354689","3456378"};
printf("\nfun2()运行如下:\n");

for(i=0;i<2*8;i++)
{
for(j=0;j<2*8;j++)
{
if(i==(i/8+1)*8-1 || j==(j/8+1)*8-1)
{
//什么都不做
}
else
{
if(a[i/8][i%8]>a[j/8][j%8])
{
t=a[i/8][i%8];
a[i/8][i%8]=a[j/8][j%8];
a[j/8][j%8]=t;
}
}

}
}
i=0;
while(i<2)
{
puts(a[i]);
i++;
}
}
void fun3()
{
int i=0,j=0;
char t;
char a[iline][irow]={"1354689","3456378"};
printf("\nfun3()运行如下:\n");

for(i=0;i<iline*irow;i++)
{
for(j=0;j<iline*irow;j++)
{
if(i==(i/irow+1)*irow-1 || j==(j/irow+1)*irow-1)//还是要注意每行结尾的\0.
{
//什么都不做
}
else
{
if(a[i/irow][i%irow]>a[j/irow][j%irow])
{
t=a[i/irow][i%irow];
a[i/irow][i%irow]=a[j/irow][j%irow];
a[j/irow][j%irow]=t;
}
}

}
}
i=0;
while(i<2)
{
puts(a[i]);
i++;
}
}

int main()
{
fun1();//法一:将二维数组转成一维数组来做
fun2();//法二:直接对二维数组排序
fun3();//法二的通用版。不过这里数组是两行的,要对应哦。
//当然,这里也可以用更通用地用传参的方式将传入数组a[][irow].这些就自己想咯。
return 0;
}

当然,整型,浮点型的排序也是这样。

热心网友 时间:2022-04-18 19:48

你首先先针对每一行进行排序,利用嵌套循环,比如(4,78,5)进行循环排序,然后再在另一个维度上,对每一行根据最大值排序,这是我唯一能想到的办法了。

热心网友 时间:2022-04-18 21:39

要C++版本的吗?
php二维数组排序方法

选择排序:选择排序每次从未排序的元素中找出最小的元素,存放到已排序序列的末尾。这种方法也比较适合对二维数组的特定列进行排序。array_multisort函数:这是PHP内置的一个函数,可以对一个或多个数组进行排序。如果应用在二维数组的排序上,可以依据数组中的特定值来排序二维数组的元素。这是一个效率较高...

二维数组如何进行排序?

若二维数组a有m列,则计算任一元素a[i][j]在数组中任意位置的公式为:a[i][j] =a+(i-1)*m+j =a[0][0]+(i-1)*m+j。二维数组中的元素是通过使用下标(即数组的行索引和列索引)来访问的。例如:a[2][3]将获取数组中第 3 行第 4 个元素。a[i][j]将获取数组中第 i+1 行...

PHP如何对二维数组(多维数组)进排序

PHP还提供了其他多种方式对二维数组进行排序,包括但不限于:使用usort()函数:usort()允许自定义排序函数,你可以根据特定的键或值来编写排序逻辑。利用array_multisort()的多键排序功能:此函数不仅支持单键排序,还能同时对多个键进行排序。处理字符大小写转换:如果需要将字符转为小写后进行排序,可结...

python 二维数组排序

在上面的代码中,我们首先创建一个3x3的二维数组arr。然后,我们使用列表推导式和sorted()函数对每个子列表进行排序,得到一个新的二维数组sorted_arr。最后,我们使用print()函数将sorted_arr打印到控制台上。请注意,上面的代码中,我们使用了sorted()函数的默认参数,即按照元素的大小进行升序排序。如果...

C语言 如何对二维数组进行按列排序?

在C语言中,二维数组按行存储,对每一行排序很方便,可以把每一行当成一个一维数组,使用排序函数直接进行排序。然而对每一列进行排序,就不能直接当成一维数组进行排序。但是仍然可以把第j列a[0...M-1][j]在逻辑上当成一维数组进行排序,下面以使用冒泡排序为例对其排序。对二维数组按列排序后,...

C语言 如何对二维数组进行按列排序?

无论是多少维的数组,机内都是一维的,以行优先存放。所以直接降为一维数组排序最方便省事。下面以二维数组为例写出代码——include "stdio.h"int main(int argc,char *argv[]){int x[3][3]={{9,4,3},{6,2,7},{5,8,1}},i,j,k,*p;printf("Before ordering is as follows:\n");...

matlab如何对二维数组排序

每个对象是一个2*1的数对,你可以先为每个数对添加一个键值,形成一个键值数组。比方说你的方案里面x的优先级是比y大的,键值不妨设计成x*1000+y(如果y不大于1000的话,如果y更大调整一下就行了),这样你对键值先用sort排序,获取索引表之后,用索引来重组要排序的对象。

java二维数组只对每行的数据进行排序

你可以把二维数组理解成普通的一维数组,只不过这个一维数组的每一个元素又是一个数组。像遍历普通数组那样遍历二维数组的行,这样就得到了每一行的数组,然后排序。ok

求教c语言二维数组的冒泡排序法?

1、打开Visual Studio工具并创建一个新的Win32程序。2、在打开的C语言文件中,导入stdio.h空间,然后准备一个main函数。3、接下来,准备一个需要进行冒泡排序的整数数组。如下图所示,数组中数字的顺序是不正常的。4、接下来,准备变量,准备好的变量用于对交互数据进行排序。5、然后我们准备两个for循环...

Delphi 二维数组怎么排序

begin a[1999]:=28;a[2000]:=28;明白了没,你的例子里面1..2表示第一维下标为1、2两个,请参照PASCAL书的子界类型篇幅。补充:佩服呀,一维护都明白了,二维不明白,这个要求不是举一反三,只是举一反二~~~下面定义的二维护数组:var a:array [1..10,1..5] of integer;i,j:intege...

如何将二维数组作为函数的参数传递 如何对二维数组进行排序 将二维数组转为一维数组的2种方法 sort函数对二维数组排序 c语言二维数组排序函数 php二维数组排序函数 如何将一个二维数组循环 如何将二维数组初始化为0 二维数组怎么排序
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
牛背山自驾游攻略2023 梦见上厕所登在那脚一滑坐在屎里了是怎么回事 河北保定学院与石家庄学院比较哪个更好一些呢? 唐山师范学院,唐山学院,石家庄学院,保定学院哪个学校的专科比较好。 保定学院与石家庄学院该选哪个? 石家庄学院专科邯郸学院专科唐山学院专科保定学院专科,哪个好?排排 ... 平谷旅游小众景点推荐一下 08年新出而且要好玩的网游哪个知道 有没有什么最近开始公测的网游08年12月-1月9日的 08年7月份内侧网游 1兆等于多少亿? 是万万亿吗? 万亿以上是多少 病毒有哪些特性呀? 病毒有何特点? C语言:学生信息管理系统 杭州星桥老街怎么改造 用标准C语言编写学生信息管理系统 病毒的特性主要体现在哪些方面? 杭州有哪些镇? 什么是病毒特征 学生信息管理系统C语言怎么做 病毒最基本的特征? 病毒的特点有哪些 病毒有哪些主要特征?(高中生物) 病毒的最基本特征是什么? 病毒的主要特征 什么是病毒?简述病毒的主要特征 杭州哪条老街很有江南气息 病毒的基本特征是___.___和___.在线等. 病毒主要特点是什么? 动物分为多少种类? 世界上的动物总共分几大类? 商业推销服务注册商标属于哪一类? 手机锁屏键坏了,按了老是会陷下去一陷下去就要关机怎么办?这里没有手机店。 手机锁屏键坏了咋办? 手机锁屏键坏了 如何修改邮箱名称 win7设置开机启动项 win7的开机启动项设置 怎样修改邮箱 果哇伊猕猴桃汁多少脂肪 如何查询电话号登录的应用 客户服务管理师的介绍 客户服务管理师的职业概况 求客户服务管理师的考试资料和试题 客户服务管理师中的论述题:请结合自身经历,论述为什么在企业认知与客户期望之间会存在差距? 怎么答 事业单位考试面试形式有哪些? 企业人力资源管理员、客户服务管理师、劳动关系员(师)这3种哪种比较好,哪种就业和待遇福利更好些? 集结季毕业礼物有哪些? 《光遇》巫师帽怎么搭?