Shuffle array variables in a pre-specified order, without using extra memory of "size of input array"

Posted by Eternal Learner on Stack Overflow See other posts from Stack Overflow or by Eternal Learner
Published on 2010-10-11T04:05:24Z Indexed on 2012/06/17 15:16 UTC
Read the original article Hit count: 137

Input :

  A[4] = {0,4,-1,1000} - Actual Array
  P[4] = {1,0,3,2} - Order to be reshuffled 

Output:

    A[4] = {4,0,1000,-1}

Condition : Don't use an additional array as memory. Can use an extra variable or two.

Problem : I have the below program in C++, but this fails for certain inputs of array P.

#include<iostream>

using namespace std;

void swap(int *a_r,int *r)
{
    int temp = *r;
    *r = *a_r;
    *a_r = temp;
}
int main()
{
    int A[4] = {0,4,-1,1000};
    int P[4] = {3,0,1,2};
    int value = A[0] , dest = P[0];

    for(int i=0; i<4;i++)
    {
        swap(&A[dest],&value);
        dest = P[dest];
    }
    for(int i=0;i<4;i++)
        cout<<A[i]<<" ";
}

© Stack Overflow or respective owner

Related posts about c++

Related posts about algorithm