Worst-case linear-time order statistics Selecting

Hi.Ihave a some problem with solving this algorithm. Question is:
1) the n elements into groups of 5. Find the median of each 5-element group by rote.
so ı wrote this code. But how ı can select the numbers from array and add create new groups of 5 elements ?
a = randperm(100,21) ;
disp(a);
len_a = length(a);
mod_a = mod(len_a,5);
b = ceil(len_a /5);
disp(b);
for j=1:b
gj = zeros(b,1);
end
for j = 1:5
gj(j,1) = a(1,j);
end

답변 (1개)

Dheeraj Singh
Dheeraj Singh 2019년 11월 8일
You can simply do something like this:
array=randperm(100,21)
noOfGroups=ceil(numel(array)/5);
medianGroup=zeros(noOfGroups,1);
for i=1:noOfGroups
group=array((i-1)*5+1:min(i*5,numel(array)));
%find median of the group
medianGroup(i)=findMedian(group)
end

댓글 수: 2

function pivot = rand_partition_old(array)
noOfGroups=ceil(numel(array)/5);
medianGroup=zeros(noOfGroups,1);
for i=1:noOfGroups
group=array((i-1)*5+1:min(i*5,numel(array)));
%find median of the group
medianGroup(i)=median(group);
end
pivot = medianGroup;
ı changed your code to this but ı have still a problem saying;
Out of memory. The likely cause is an infinite recursion within the program.
Error in rand_partition_old (line 11)
medianGroup(i)=median(group);
i don't see any recursive code here...
can you provide the array as a mat file

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Elementary Math에 대해 자세히 알아보기

질문:

2019년 11월 3일

댓글:

2019년 11월 14일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by