-1
我需要编写一个嵌入了quicksort算法的递归函数。 更新新边界时遇到问题。 y是矩阵,m是需要排序的行的数量。请帮助...quicksort matlab,递归函数
function [y]=quicksort(y,left,right,m)
i=left;
j=right;
num=randi(length(y)); % pick a random element in the array as pivot
pivot=y(m,num);
if i <= j %find the element fits criteria below before i overlaps j.
while y(m,i) < pivot
i = i + 1;
end
while y(m,j) > pivot
j = j - 1;
end
ytmp=y(:,j);
y(:,j)=y(:,i);
y(:,i)=ytmp;
i = i + 1;
j = j - 1;
%swap the positions of the two elements when y(m,j) < pivot < y(m,i)
else
return
end
return
[y]=quicksort(y,i,right,m); %update the boundaries.
[y]=quicksort(y,left,j,m); %recursively call the function.
(1)请修复您的缩进。 (2)扩展你正在被卡住的地方(3)为什么你不让你的递归函数只接受一个向量,然后做一个包装函数,从矩阵'y'中提取行'm'并将其传递给你的递归函数。 – Dan
@Dan我会假设他们试图根据行'm'排序整个矩阵。 @YYCCC我不认为你的最后一个'return'是正确的。 – beaker