我有数据(数字 M x N,n > 2)按第一列排序,然后按第二列排序。
有谁知道将数据转换为按第二列然后按第一列排序的有效算法?显然, sortrows(data,[2,1]) 可以解决问题,但我正在寻找能够利用输入数据的现有结构以提高速度的东西,因为 M 非常大。
此外,前两列中的数据是一组已知的整数(每个都远小于 M)。
最佳答案
根据 MATLAB R2010b 的帮助文档,函数 SORTROWS 使用稳定版本的 quicksort 。由于 stable sorting algorithms "maintain the relative order of records with equal keys" ,您可以通过简单地对第二列已排序的数据进行排序来实现您想要的:
data = sortrows(data,2);
此结果将保持第一列中元素的相对顺序,这样数据将首先按第二列排序,然后按第一列排序。
关于sorting - 使用 sortrows 更改列顺序的快速 MATLAB 方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4852841/