二维数组sort排序

和副本任务完全无关的奇怪感慨:

完全搞不懂我为什么会在搞图论的时候学这种奇怪东西,需要的时候不会,不需要的时候又莫名增加了奇怪的技能点.

之前的假期规划在十多天的放飞自我中彻底泡汤,简单的图论都一点不会,sad.
在想要不要把分治 贪心 递推 哈希 大根小根堆再看一遍,我似乎又忘了.
刘神刷题比我快了,我应该好好学习不能这么浪.
大概我永远没有大神们的智商优势吧,所以要更努力.
毕竟没有贯彻意志的希望一无所有,所以努力成为hal一样的绿灯侠吧少年[bushi].
 
好了回归正题.
要想知道二维数组排序首先要知道二维数组的储存方式;
比如说 int wtf[2][2];//↓下面的四个口代表一个int储存位[虽然很不标准但是大概能理解吧]
口口口口 口口口口 口口口口 口口口口
↑wtf[0][0]           ↑wtf[0][1]          ↑wtf[1][0]        ↑wtf[1][1]
所以排序的时候就是先看行再看列
[就是把下面一行一行的按顺序移到后面,一个wtf[a][b]和一个wtf[a*b]从某种意义上说是差不多的;
我个人是这么看的,所以你也可以觉得它是先看列再看行,不过我更希望内存是横着排的...虽然这只是个比方]
 
然后我们开始学习怎么排序;
假如我们有一个wtf[a][b]的int数组,我想把wtf[x][0]到wtf[x][b-1]从小到大排序(0<=x<=a-1)
c++代码如下
for(int i=0;i<=a-1;i++){
    sort((int*)wtf+b*i,(int*)wtf+b*i+b);
}
View Code

至于其他从大到小或者什么神奇的排序,自己定义一个mycmp放后面好了,就和普通排序一样;

似乎还有greater<int>()这种神奇的东西可以放在后面.
 
嗯至于怎么把wtf[0][x]到wtf[a-1][x]排序,我不会...
 
数组课堂就到这里,虽然并没有同学会看这么神经病的东西,但是还是感谢您的观看,比心.

posted @ 2017-11-04 15:46  鲸头鹳  阅读(6978)  评论(0编辑  收藏  举报