不使用sort命令对列表中的数字进行排序

时间:2019-01-14 22:07:00

标签: matlab sorting numbers

我试图不使用Matlab中的sort命令对列表中的数字进行排序。我找不到我的代码出了什么问题。

这是我尝试过的:

clc
A= [1 2 4 0 0 8]
B=[]
for i=1:length(A)
    indx=find(A==min(A))
    for j=1:length(indx)
        B(i)=A(indx(j))
    end
    A(indx(1):indx(length(indx)))=[]
    B
end

结果是:

    B =

 0     1     2     4     8


indx =

1×0 empty double row vector

Index exceeds the number of array elements (0).

B的期望值为

B =

    0     0     1     2     4     8

1 个答案:

答案 0 :(得分:0)

这会更正您的代码:

A= [1 2 4 0 0 8];
L=length(A);
B=zeros(1,L);
k=1;
for i=1:L
    indx=find(A==min(A));
    for j=1:length(indx)
        B(k)=A(indx(j));
        k=k+1;
    end
    A(indx)=[];
    B
end

您的代码中的问题是,找到最小值后,您随时都会将其覆盖在B上的当前数据上(因为在第二个for中,您始终从索引1开始)