现有一个二维数组,每一行元素为一个整数和一个字符串,如:23 fortest;
11 test2;现我想将数组按照那个整数进行升序排序,如之前两个排序后变为:
11 test2;23 fortest;我用的是matlab,请各位大牛指点,很急!
关于matlab排序
答案:2 悬赏:0
解决时间 2021-03-14 04:12
- 提问者网友:逐野
- 2021-03-13 14:59
最佳答案
- 二级知识专家网友:丢不掉的轻狂
- 2021-03-13 16:26
很简单啊,把整数和字符串设为两列的矩阵,然后先对第一列矩阵(就是整数)进行排序,排序时把排序得到的索引(就是排序后得到的矩阵某元素对应该元素在原矩阵的下标),利用索引就可以把字符串按照索引进行排列,然后就得到你想要的结果了。MATLAB的命令示范如下:
A = [23 11 13] %矩阵A为整数,我加了一行13 iloveyou
B = {'fortest test2 iloveyou'}%由于是字符串矩阵,就用cell类型的
%下面开始排序
[A_sorted index] = sort(A) %升序并得到index
B_sorted = B(index)%B(index)是将B中的元素按index的序列进行排序,%%%%%%%MATLAB%索引矩阵时如果采用A(i)有形式,表示对矩阵按列进行索引。。这个自己体会下,
不知道这样你满意吗?
我还不清楚如何将双精度类型的变量和字符变量装在同一个矩阵中……-_-#
A = [23 11 13] %矩阵A为整数,我加了一行13 iloveyou
B = {'fortest test2 iloveyou'}%由于是字符串矩阵,就用cell类型的
%下面开始排序
[A_sorted index] = sort(A) %升序并得到index
B_sorted = B(index)%B(index)是将B中的元素按index的序列进行排序,%%%%%%%MATLAB%索引矩阵时如果采用A(i)有形式,表示对矩阵按列进行索引。。这个自己体会下,
不知道这样你满意吗?
我还不清楚如何将双精度类型的变量和字符变量装在同一个矩阵中……-_-#
全部回答
- 1楼网友:输掉的尊严
- 2021-03-13 16:39
function n=bub(p)
n=p;
if length(size(p))~=2 | min(size(p))>1,
disp('参数必须为向量.');
else
for i=1:length(p)
for j=2:length(p)
if n(j-1)>n(j)
q=n(j-1);
n(j-1)=n(j);
n(j)=q;
end
end
end
end
end
有多余的比较.
可以把 for j=2:length(p)
修改成 for j=2:(length(p)-i+1)
不过既然是bubble排序,就不要太在意效率,越简单越好.
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯