1. 程式人生 > >perfect shuffle 演算法的一個線性複雜度實現

perfect shuffle 演算法的一個線性複雜度實現

void perfect(int Data[],int Lenth)
{
   int i,startPos=0;
   while(startPos<Lenth)
   {
     i=LookUp(Lenth-startPos);
     ShiftN(&Data[startPos+(i-1)/2],(Lenth-startPos)/2,(i-1)/2);
     Perfect1(&Data[startPos],i-1);
  startPos+=(i-1);
   }
}
#define N 100
void main()
{
int data[N]={0};
int i=0;
int n;
printf("please input the number of data you wanna to test(should less than 100):\n");
scanf("%d",&n);
if(n&1)
{
  printf("sorry,the number should be even ");
  return;
}
for(i=0;i<n;i++)
  data[i]=i+1;