Move all the negative elements to one side of the array in C++
Move all negative elements to one side of the array in C++
Here, in this page we will discuss the program to move all negative elements to one side of the array in C++ . We use the concept of two pointers to do so . We are giving with the size of the array along with array elements .We have to print array as desired.
Algorithm :
- Take the size of the array from the user and store it in variable say n.
- Now, declare a vector of size n and take the n elements of the vector say arr from the user.
- Take two variables like left and right which hold the 0 and n-1 indexes.
Just need to check that :
- Check If the left and right pointer elements are negative then simply increment the left pointer.
- Otherwise, if the left element is positive and the right element is negative then simply swap the elements, and simultaneously increment and decrement the left and right pointers.
- Else if the left element is positive and the right element is also positive then simply decrement the right pointer.
- Repeat the above 3 steps until the left pointer ≤ right pointer.
#include<iostream> using namespace std; // Function to shift all the // negative elements on left side void shiftall (int arr[], int left, int right) { while (left <= right) { if (arr[left] < 0 && arr[right] < 0)
left += 1;
else if (arr[left] > 0 && arr[right] < 0)
{
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left += 1; right -= 1;
}
else if (arr[left] > 0 && arr[right] > 0) right -= 1; else { left += 1; right -= 1; } } } void display (int arr[], int right) { for (int i = 0; i <= right; ++i) { cout << arr[i] << " "; } cout << endl; } int main () { int n; cin >> n; int arr[n]; for (int i = 0; i < n; i++) cin >> arr[i]; // Function Call shiftall (arr, 0, n - 1); display (arr, n - 1); return 0; }
Code in C++
Output
5
8 9 10 -2 7
-2 8 9 10 7
Prime Course Trailer
Related Banners
Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription
Login/Signup to comment
#include
using namespace std;
void move(int arr[],int n)
{
int j=0;
for(int i=0;i<n;i++)
{
if(arr[i]<0){
if(i!=j)
swap(arr[i],arr[j]);
j++;
}
}
}
int main()
{
int arr[]={9,1,-9,-2,0};
int n=5;
move(arr,n);
for(int i=0;i<n;i++)
cout<<arr[i]<<" ";
}
#include”bits/stdc++.h”
using namespace std;
void moveall(int arr[],int n)
{
int i=-1;
int pivot=0;
for(int j=0;j<n;j++)
{
if(arr[j]<pivot)
{
i++;
swap(arr[i],arr[j]);
}
}
for(int j=0;j<n;j++)
{
cout<<arr[j]<<" ";
}
}
int main()
{
int arr[]={-2,2,-4,-5,3,4,20,1,112,-1,-21,-3};
int n=sizeof(arr)/sizeof(arr[0]);
moveall(arr,n);
}