Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void deinterleave_split(int *a, int len)
- {
- if (2 == len)
- {
- // not needed
- }
- else if (4 == len)
- {
- int t = a[1];
- a[1] = a[2];
- a[2] = t;
- }
- else if (0 == (len % 4))
- {
- deinterleave_split(&a[0], len/2);
- deinterleave_split(&a[len/2], len/2);
- for (int i = len/4; i < len/2; i++)
- {
- int t = a[i];
- a[i] = a[i+len/4];
- a[i+len/4] = t;
- }
- }
- else
- {
- int t;
- deinterleave_split(&a[0], len-2);
- t = a[len-2];
- memmove(&a[len/2],&a[len/2-1],sizeof(int)*(len/2-1));
- a[len/2-1] = t;
- }
- }
- void interleave_split(int *a, int len)
- {
- if (2 == len)
- {
- // no need
- }
- else if (4 == len)
- {
- int t = a[1];
- a[1] = a[2];
- a[2] = t;
- }
- else if (0 == (len % 4))
- {
- for (int i = len/4; i < len/2; i++)
- {
- int t = a[i];
- a[i] = a[i+len/4];
- a[i+len/4] = t;
- }
- interleave_split(&a[0], len/2);
- interleave_split(&a[len/2], len/2);
- }
- else
- {
- int t;
- t = a[len/2-1];
- memmove(&a[len/2-1],&a[len/2],sizeof(int)*(len/2-1));
- a[len-2] = t;
- interleave_split(&a[0], len-2);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement