全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
1414 2
2012-05-17
有个问题,关于用matlab进行排序,大致是这样的,
我有一个N*4 的矩阵,我需要对他进行排序,

先是 按照第一列的大小排序,然后 对于第一列数值相同的行,按照第2列大小排序,然后 对于第一列和第2列 相同的行,按照 第 3列大小排序,对于 前3列 相同的行,按照第4列大小排序,  

这个 CODE该怎么写啊,谢谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-5-17 06:34:25
一般matlab参考书上都有的。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-8-30 18:42:36
下面的matlab代码:
%  快速排序法
%  基本的思想:通过一趟排序将待排的记录分割成独立的两部分,
%  其中前一部分的 记录的关键字均比另一部分记录的关键字小,
%  再分别对两组记录进行递归分割,达到排序的目的
%  平均时间复杂度为  O(log2(n))
function qsort_main()
A = rand(100, 1) * 30;
data = A; low = 1; high = 100;
data = QSort(data, low, high)
A

function  data = QSort(data, low, high)
if nargin == 1
    low = 1;
    high = length(data);
end
if(low<high)
    [data pivokey] = qPartition(data, low, high);
    data = QSort( data, low, pivokey - 1 );
    data = QSort( data, pivokey + 1, high );
end
% 将数组分成两部分,前一部分的值均比后一部分值小
% 返回分界点
function [data low] = qPartition(data, low, high)
if nargin == 1
    low = 1;
    hight = length(data);
end
pivokey=data(low);
while low < high
    while low < high & data(high) >= pivokey
        high = high - 1;
    end
    c = data(low); d = data(high);
    data(low) = d; data(high) = c;
    while low < high & data(low) <= pivokey
        low = low + 1;
    end
    c = data(low); d = data(high);
    data(low) = d; data(high) = c;
end
可以分别保存,也可以保存成一个文件,直接使用,效果挺好的
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群