C++ Program to Count Positive and Negative Numbers in an Array

Last Updated : 23 Jul, 2025

Given an array arr of integers of the size of N, our task is to find the count of positive numbers and negative numbers in the array.

Examples:

Input: arr[] = [-9,7,-5,3,2]
Output: Positive elements = 3, Negative elements = 2

Input: arr[] = [5,4,-2,-1,-7]
Output: Positive elements = 2, Negative elements = 3

Approach:

  • Traverse the elements in the array one by one.
  • Find the element positive or not positive by using the condition element >=0. If the condition is satisfied increase the p_count.
  • Remove the p_count from the total number of elements to get count negative numbers in the array.
  • Print the positive and negative numbers count.

Example:

C++
// C++ program to find the count of positive
// and negative integers in an array
#include<bits/stdc++.h>
using namespace std;
//function to calculate the positive numbers in an array
int CountPositive(int arr[],int n){
  int p_count = 0;
  for(int i =0;i<n;i++){
    if (arr[i]>=0){
      p_count++;
    }
  }
  return p_count;
}

//Function to print the array
void printArray(int arr[],int n){
  cout<<"Array: ";
  for(int i = 0; i<n; i++){
    cout<<arr[i]<<" ";
  } 
  cout<<"\n";
}

// Driver program
int main()
{
 int arr[] = {-9,7,-5,3,2 };
 int n;
 n = sizeof(arr) / sizeof(arr[0]);
 
 printArray(arr, n);

 int p_count = CountPositive(arr,n); 
 cout<<"Count of Positive elements = "<<p_count<<", ";
 cout<<"Count of Negative elements = "<<n - p_count;
 
 return 0;
}

Output
Array: -9 7 -5 3 2 
Count of Positive elements = 3, Count of Negative elements = 2

Time complexity: O(n) 
Auxiliary space: O(1)

Method: Using Recursion 

C++
// C++ program to find the count of positive
// and negative integers in an array
#include<bits/stdc++.h>
using namespace std;
//Defining recursive function to calculate no of positive in an array
int CountPositive(int begin,int arr[],int n,int pos_count){
  if (begin==n)  //base condition
  return pos_count;
  if (arr[begin]>=0)  //checking whether no is positive or not
    pos_count++;
  return CountPositive(begin+1,arr,n,pos_count);  //recursive calling
}

//Function to print the array
void printArray(int arr[],int n){
  cout<<"Array: ";
  for(int i = 0; i<n; i++){
    cout<<arr[i]<<" ";
  } 
  cout<<"\n";
}

// Driver program
int main()
{
 int arr[] = {-9,7,-5,3,2 };
 int n;
 n = sizeof(arr) / sizeof(arr[0]);
 
 printArray(arr, n);

 int p_count = CountPositive(0,arr,n,0);  //calling recursive function
 cout<<"Count of Positive elements = "<<p_count<<", ";
 cout<<"Count of Negative elements = "<<n - p_count;
 
 return 0;
}

Output
Array: -9 7 -5 3 2 
Count of Positive elements = 3, Count of Negative elements = 2

Time complexity: O(n)
Auxiliary space: O(n)

Another approach using C++ Standard Template Library (STL) and 'count_if()'function:

C++
#include <iostream>
#include <algorithm>

using namespace std;

int main() {
  int arr[] = {-9,7,-5,3,2};
  int n = sizeof(arr) / sizeof(arr[0]);
  cout<<"Array: ";
  for(int i = 0; i<n; i++){
    cout<<arr[i]<<" ";
  }
  cout<<"\n";
 
  // use count_if function to count positive and negative numbers
  int pos_count = count_if(arr, arr + n, [](int x) { return x >= 0; });
  int neg_count = count_if(arr, arr + n, [](int x) { return x < 0; });

  // print the counts
  cout << "Count of Positive elements ="<< pos_count<<", ";
  cout << "Count of Negative elements = " << neg_count;

  return 0;
}

Output
Array: -9 7 -5 3 2 
Count of Positive elements =3, Count of Negative elements = 2

Time complexity: O(n)
Auxiliary space: O(n)

Another Efficient Approach ( Using binary search ) :

  • If the array is not sorted , then first sort the array.
  • Using Binary Search to get the last index of negative number in the sorted array.
  • Initialize index as last index of negative number to -1 in  array because ,if there is no negative number in the array , then it will return -1 as last index of negative number.
  • Count of negative numbers will be ' index +1 ' because we are using 0-based indexing
  • Count of positive numbers will be 'count of  total numbers - count of negative numbers  in the array .
  • Print final answer .

Below is the implementation of the above approach:

C++
// C++ implementation of the above approach

#include <bits/stdc++.h>
using namespace std;

// Function to find last index of negative number
// in the sorted array
int BinarySearch(int *arr, int n)
{   
    int l = 0, r = n-1, index = -1;// Initialize index as -1 initially
    while(l <= r)
    {   
        int mid = (l + r) / 2;
       
        // if arr[mid] is negative , then we will not search 
        // in the range [l,mid-1] because last index of negative
        //number will be in the range [mid,r] in the sorted array
        if(arr[mid]<0)
        {
            l = mid + 1;
            index=mid;// updating rightmost index of 
            // negative number every time in the sorted array
        }
        else
          {  
              r = mid - 1;
          }
    }
  
    // return last index of negative number
    return index;
}
// Function to print array elements
void printArray(int *arr,int n)
{
  cout<<"Array: ";
  for(int i = 0; i<n; i++)
  {
    cout<<arr[i]<<" ";
  } 
  cout<<endl;
}

// Drive Code
int main()
{   
    int arr[] = {-9,7,-5,3,2 };
    int n = sizeof(arr) / sizeof(arr[0]);
    printArray(arr, n);
  
    //sorting array for binary search
    sort(arr,arr+n);
  
    int neg_count = BinarySearch(arr, n)+1;
    int pos_count = n - neg_count;
  
    // print the counts
    cout << "Count of Positive elements = "<< pos_count<<", ";
    cout << "Count of Negative elements = " << neg_count<<endl;
    
    return 0;
}

// This code is contributed by nikhilsainiofficial546

Output
Array: -9 7 -5 3 2 
Count of Positive elements = 3, Count of Negative elements = 2

Time complexity: O(n*log2n)
Auxiliary space: O(1)

Comment