楼主: ly8301
1451 2

[问答] 用matlab 进行排序 [推广有奖]

  • 0关注
  • 1粉丝

本科生

66%

还不是VIP/贵宾

-

威望
0
论坛币
133 个
通用积分
0.1586
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
996 点
帖子
88
精华
0
在线时间
55 小时
注册时间
2010-6-13
最后登录
2018-7-22

楼主
ly8301 发表于 2012-5-17 04:10:35 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
有个问题,关于用matlab进行排序,大致是这样的,
我有一个N*4 的矩阵,我需要对他进行排序,

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

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

扫码加我 拉你入群

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

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

关键词:MATLAB matla atlab Atl Lab matlab

沙发
aibieli731001 发表于 2012-5-17 06:34:25
一般matlab参考书上都有的。

藤椅
matlab-007 发表于 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
可以分别保存,也可以保存成一个文件,直接使用,效果挺好的

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-12 23:58