Невозможно выполнить * быструю сортировку * сценария в matlab (из книги «Инженерные вычисления с книгой matlab» - Смит) - PullRequest
0 голосов
/ 30 января 2012

Сценарий находится на стр. 438 книги, 2-е издание. Вот оно:

function a = quicksort(a, from, to)
clear, clc, close all

if (from < to)
[a p] = partition(a, from, to);
a = quicksort(a, from, p);
a = quicksort(a, p+1, to);
end

function [a lower] = partition(from,to)

pivot = a(from); i = from - 1; j = to + 1;
while (i<j)
i = i + 1;
while lt(a(i),pivot)
    i = i + 1;
end
j = j - 1;
while gt(a(j), pivot)
    j = j - 1;
end
if (i<j)
    temp = a(i);
    a(i) = a(j);
    a(j) = temp;
end
end
lower = j;
a

Мне не удается выполнить скрипт, чтобы увидеть результат, и я продолжаю получать следующую ошибку (даже если я изменяю входные данные):

??? Error using ==> quicksort>partition
Too many input arguments.

Error in ==> quicksort at 9
[a p] = partition(a, from, to);

Может кто-нибудь, пожалуйста, помогите мне? Мне очень интересны эти методы сортировки Matlab. Спасибо.

1 Ответ

2 голосов
/ 30 января 2012

Вы должны никогда вызывать clear all, clc, close all внутри функции. Вы не должны даже называть это из сценария, по моему мнению.

Кроме того, у вызова partition слишком много входных аргументов, как говорится в ошибке. Фактически, функция partition должна быть определена как partition(a, from, to) вместо partition(from,to).

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