#include<stdio.h>
#include<stdlib.h >
#include<math.h>
#include<string.h>

#define MAXN 2000
int a[MAXN];
int cnt = 0;
int log2n;
int n;

void populatetestcase(int i)
{
if(i*2<=n) populatetestcase(i*2);
a=++cnt;
if(i*2+1<=n) populatetestcase(i*2+1);
}

int calc_x(int i)
{
return (int)log2l((double)i);
}

int calc_m1(int i)
{
return 1 << (log2n-calc_x(i)+1);
}

int calc_m2(int i)
{
return i - (1<<calc_x(i));
}

int main()
{
int i,j,temp,p;
n=(1<<7)-1;
log2n = calc_x(n);
populatetestcase(1);
for(i=1; i<=n; i++) {
p= calc_m1(i)*calc_m2(i) + calc_m1(i)/2;
if((p<i && a[p]<a)|| (p>i && a[p]>a))
continue;
j=i;
while(p!=i)
{
temp = a[j];
a[j] = a[p];
a[p] = temp;
p = calc_m1(p)*calc_m2(p) + calc_m1(p)/2;
}
}
for(i=1; i<=n; i++)
{
printf("%d ",a);
}
system("PAUSE");
return 0;
}

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/algogeeks
-~----------~----~----~----~------~----~------~--~---

Reply via email to