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

5 visualizaciones (últimos 30 días)
sachin gawande el 22 de Oct. de 2014
Editada: Julia el 23 de Oct. de 2014
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
##### 0 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

Julia el 22 de Oct. de 2014
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 comentariosMostrar NingunoOcultar Ninguno
sachin gawande el 22 de Oct. de 2014
Actually I am trying t store array in A and B
here is my code for 16 bits but I want to generalize it for N bits, in this code if i put X =1:32 i am getting only odd integers in fact I want all integers.
clc clear all X=[1:16];
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;
l=length (X);
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
[A B a b]
u can try this code you will understand what exactly A B a b are?
Julia el 23 de Oct. de 2014
Editada: Julia el 23 de Oct. de 2014
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)

Iniciar sesión para comentar.

### Categorías

Más información sobre Shifting and Sorting Matrices en Help Center y File Exchange.

### Community Treasure Hunt

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

Start Hunting!

Translated by