我试图不使用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
答案 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开始)