How to sort even and odds elements in an array or vector recursively?

16 ビュー (過去 30 日間)
sachin gawande 2014 年 10 月 22 日

Hi,
I am trying to sort an array of 1xN in different odd and even arrays till the length last array =4 for example: X=1:32; N=length(X) m=log2(N);
for i=1:m
A=X(1,1:2:end); %for odd bits B=X(1,2:2:end); %for even bits X=A;
if l=4 break end
a=B(1,1:2:end); %for odd bits b=B(1,2:2:end); %for even bits B=a; end
i m getting output for X=1:16 but if I increase length of X to N then its is not working; for X=1:32, I am getting only odd values
i want the o/p as [1 9 17 25 5 13 21 29 3 11 19 27 7 15 23 31 2 10 18 26 6 14 22 30 4 12 20 28 8 16 24 32]
In my code it is considering odd bits only. I want to do this for N bit but my loop is not working in that case. Please help me out

サインインしてコメントする。

採用された回答

Julia 2014 年 10 月 22 日
Hi,
I don't really get your intention. What are A, B, a and b for?
And where do you compute l for the if-statement?
2 件のコメント表示非表示 1 件の古いコメント
Julia 2014 年 10 月 23 日
I think I know what the problem is.
For
X = 1:16
You compute A ans B twice but a and b only once, so you keep your even values in a and b.
But for
X = 1:32
you compute A, B, a and b twice. The second time you compute a and b you use B, which now contains only odd values --> a and b now contain only odd values.
B=a
is overwritten in the next loop iteration by
B=X(1,2:2:end)

サインインしてコメントする。

Community Treasure Hunt

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

Start Hunting!