我有数据(数字M x N,n> 2)到达按第一列排序,然后到第二列.有谁知道一个有效的算法,将数据转换为第二列然后第一列排序?显然,sortrows(数据,[2,1])可以解决这个问题,但我正在寻找能够利用输入数据的现有结构以获得更快速度的东西,因为M非常大.
另外,前两列中的数据是一组已知的整数(每个整数都小于M).
基于MATLAB R2010b的帮助文档,功能SORTROWS使用稳定版本的快速排序.由于稳定的排序算法"维护具有相同键的记录的相对顺序",因此您可以通过简单地依赖已经排序的数据来实现您想要的第二列:
data = sortrows(data,2);
Run Code Online (Sandbox Code Playgroud)
此结果将保持第一列中元素的相对顺序,以便数据首先由第二列排序,然后由第一列排序.