Everyone should know the bubble sort method of organising an array. I sat down and made some improvements as I can imagine how bad this method of sorting an array is with really large arrays. What do you guys think?

Code:
// Enhanced bubble sort

#include <cstdlib>
using std::rand;
using std::srand;

#include <iostream> 
using std::cout;
using std::cin;

// Prototypes
void bubblesort( int array[], int );

int main()
{
   const int arraySize = 100;
   int array[ arraySize ];
   
   srand( time( 0 ) );
   
   // Simply enters random values into the array
   for( int i = 0; i < arraySize; i++)
      array[ i ] = ( 1 + rand() % 1000 );
      
   cout << "Unsorted Array: \n";
   
   // Outputs all elements of the array before being sorted
   for( int i = 0; i < arraySize; i++ )
      cout << array[ i ] << ' ';
      
   bubblesort( array, arraySize );
   cout << "\n\nSorted Array: \n";
   
   // Outputs all elements of the array after being sorted
   for( int i = 0; i < arraySize; i++ )
      cout << array[ i ] << ' ';
   
   cout << "\n\nPress a key to quit . . . ";
   cin.get();
   return 0;
}

void bubblesort( int array[], int size )
{
   int hold; // to temporarily hold the variable while sorting
   int reduce = 0; // speeds up the bubble sort by removing comparrisons not needed
   int swaps = 0; // counts how many swaps have been made during execution
   
   // To control number of passes
   for( int pass = 1; pass < size; pass++, reduce++ )
   {
      // Controls number of comparrisons per pass
      for( int j = 0; j < size - 1 - reduce; j++ )
      
         if( array[ j ] > array[ j + 1 ] )
         {
            hold = array[ j ];
            array[ j ] = array[ j + 1 ];
            array[ j + 1 ] = hold;
            swaps++;
         }
      
      // If no swaps have been made then the data must already be in the correct
      // order, so the sorting should terminate 
      if( swaps == 0 )
         pass = size;
   }
}