Сортировка чисел в списке без использования команды сортировки - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь отсортировать числа в списке без использования команды сортировки в Matlab. Я не мог найти, что случилось с моим кодом.

Вот что я попробовал:

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 голосов
/ 15 января 2019

Этот исправляет ваш код:

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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...