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: 161
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