Search code examples
c++bubble-sort

What is the error in this bubble sort code?


I wrote this simple code for bubble sort but it gives some random garbage values as output. Can someone please tell me my mistake. I tried to print the output of A[i] and A[j] in the function bubbleSort and looks like it is working fine. But why is the printSortedArray not giving the correct output? Thanks!

#include <iostream>

using namespace std;

void swap(int *a, int *b)
{
    int temp;
    temp=*a;
    *a=*b;
    *b=temp;
}
void printSortedArray(int A[],int size)
{
    cout<<"the sorted array is"<<endl;
    int i;
    for(i=0;i<size;i++);
    {
        cout<<A[i]<<" ";
    }
}
void bubbleSort(int A[],int size)
{
    int i,j;
    for(i=0;i<size;i++)
    {
        for(j=0;j<size-1-i;j++)
        {
            if(A[j]>A[j+1])
            {
                swap(A[j],A[j+1]);
            }
        }
    }
}

int main()
{
    int A[50]; int size,i;
    cout<<"enter the size of the array: ";
    cin>>size;
    cout<<"Enter the "<<size<<" numbers to be sorted"<<endl;
    for(i=0;i<size;i++)
    {
       cin>>A[i];
    }

    bubbleSort(A,size);
    printSortedArray(A,size);

    return 0;
}

Solution

  • for(i=0;i<size;i++);
    

    The trailing semicolon does not belong there. This results in undefined behavior.

    The end result is that this function printed one garbage value after the end of the array.