Currently working my way through the Jumping into C++ e-book, anyways the current chapter is on arrays, in said chapter we are given a way of sorting the variables in our array and then returning them in order from smallest to largest. The practice question asks us: Turn the code that we wrote for insertionSort into an insertionSort function that works for any sized array.

Now I thought this would be easy, but alas I was wrong, I cannot seem to figure out where to go with this one. The code below is what I have gotten so far, but my program is crashing so clearly it is not right... I thought that changing the for loop in int main from a hard coded i < 10 to a value that was input by the user would solve this practice problem, but I was wrong. Original: for ( int i = 0; i < 10; i++ ) ///// Mine: for ( int i = 0; i < arrayLength; i++ )

What am I not understanding here??? (code below)

Code:
#include <cstdlib>
#include <ctime>
#include <iostream>
using namespace std;
int findSmallestRemainingElement (int array[], int size, int index);
void swap (int array[], int first_index, int second_index);
void sort (int array[], int size)
{
    for ( int i = 0; i < size; i++ )
    {
        int index = findSmallestRemainingElement( array, size, i );
        swap( array, i, index );
    }
}
int findSmallestRemainingElement (int array[], int size, int index)
{
    int index_of_smallest_value = index;
    for (int i = index + 1; i < size; i++)
    {
        if ( array[ i ] < array[ index_of_smallest_value ] )
        {
            index_of_smallest_value = i;
        }
    }
    return index_of_smallest_value;
}
void swap (int array[], int first_index, int second_index)
{
    int temp = array[ first_index ];
    array[ first_index ] = array[ second_index ];
    array[ second_index ] = temp;
}
// small helper method to display the before and after arrays
void displayArray (int array[], int size)
{
    cout << "{";
    for ( int i = 0; i < size; i++ )
    {
    // you'll see this pattern a lot for nicely formatting
    // lists--check if we're past the first element, and
    // if so, append a comma
    if ( i != 0 )
    {
        cout << ", ";
    }
    cout << array[ i ];
    }
    cout << "}";
}
int main ()
{
    int arrayLength;
    int array[ arrayLength ];
    cout << "Please tell me how many numbers you would like in your array today: ";
    cin >> arrayLength;
    cout << "Thank you! \n";
    srand( time( NULL ) );
    for ( int i = 0; i < arrayLength; i++ )
    {
        // keep the numbers small so they're easy to read
        array[ i ] = rand() % 100;
    }
    cout << "Original array: ";
    displayArray( array, arrayLength );
    cout << '\n';
    sort( array, arrayLength );
    cout << "Sorted array: ";
    displayArray( array, arrayLength );
    cout << '\n';
}