#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 -~----------~----~----~----~------~----~------~--~---