Function to sort an array using bubble sort

Quick and dirty way of sorting an array is bubble sort. It is very easy to write and follow. But please keep in mind that it is not at all effecient.



#include<iostream>
using std::cin;
using std::cout;
void readArray(int arr[],int sz);
void printArray(int arr[],int sz);
void sortArray(int arr[],int sz);
void swap(int &a,int &b);

int main()
{
   int sz;
   cout<<"Size of the array=";
   cin>>sz;
   int arr[sz];
   readArray(arr,sz);
 
  sortArray(arr,sz);
  cout<<"Sorted array is ";
  printArray(arr,sz);
}

void readArray(int arr[],int sz)
{
 for(int i=0;i<sz;i++)
   {
      cout<<"arr["<<i<<"]=";
      cin>>arr[i];
  }
}


void printArray(int arr[],int sz)
{
 for(int i=0;i<sz;i++)
   {
      cout<<"arr["<<i<<"]=";
      cout<<arr[i]<<"\n";
  }
}
void sortArray(int arr[],int sz)
{
    for(int i=0;i<sz-1;i++)
   {
        for(int j=0;j<sz-i-1;j++)
        {
             if(arr[j]>arr[j+1])
                 swap(arr[j],arr[j+1]);
        }
   }
}
void swap(int &a,int &b)
{
    a = a+b;
    b = a-b;
    a = a-b;
}


This sorting compares and if necessary swaps the adjacent elements. Once all the elements are compared, it is one pass. Sorting requires such n-1 passes for an array of n elements. At each pass, the larger elements sink to the bottom and smaller elements bubble up to the top. Hence the name.
The complexity of bubble sort is O(n2)

You can make this slightly better by modifying the outer loop of sort function continue as long as there are any swappings.

void sortArray(int arr[],int sz)
{
    int swapped = 1;
    for(int i=0;i&lt && swapped==1;sz-1;i++)
   {
       swapped =0;//false
        for(int j=0;j<sz-i-1;j++)
        {
             if(arr[j]>arr[j+1])
                 {
                 swap(arr[j],arr[j+1]);
                  int swapped = 1;//set swapped to true
                  }
        }
   }
}

Comments

Popular Posts