I wrote this C++ program to sort an integer matrix using selection sort. I tried to compile and run the program. But I ran into a stack overflow error and the message also said something about an access violation writing location .
I tried the following steps:
But all these efforts were of no use.
This is the part of the source code involved in the runtime error.
void SelectionSort(int matrix[][10], int rowMax, int colMax)
{
    //Runtime error was pointed over here.
    int smallest, temp, position, count = 0;
    int resultant[10][10];
    for (int row = 0; row < rowMax; row++)
    {
        for (int j = 0; j < rowMax - 1; j++)
        {
            smallest = matrix[row][j];
            position = j;
            for (int k = j + 1; k < rowMax; k++)
            {
                if (matrix[row][k] < smallest)
                {
                    smallest = matrix[row][k];
                    position = k;
                }
            }
            temp = matrix[row][j];
            matrix[row][j] = matrix[row][position];
            matrix[row][position] = temp;
        }
    }
    for (int i = 0; i < rowMax; i++)
        for (int j = 0; j < colMax; j++)
            resultant[i][j] = matrix[j][i];
    if (count == 0)
    {
        SelectionSort(resultant, rowMax, colMax);
        count++;
    }
    else
    {
        std::cout << "The sorted matrix is: " << std::endl;
        for (int i = 0; i < rowMax; i++)
        {
            for (int j = 0; j < colMax; j++)
            {
                std::cout << matrix[i][j] << "  ";
            }
            std::cout << "\n";
                }
        }
}  
These were the messages that were thrown.
Exception thrown at 0x00007FF79D763488 in Sorting Algorithm Benchmarking Program.exe: 0xC0000005: Access violation writing location 0x000000BFBF600000. occurred
and
Unhandled exception at 0x00007FF79D763488 in Sorting Algorithm Benchmarking Program.exe: 0xC00000FD: Stack overflow (parameters: 0x0000000000000001, 0x00000058CE0B3000). occurred
I expected the sorted matrix to be printed in the console.
For example, if the unsorted matrix is:
1   9   5
8   3   6
7   4   2   
then the output should be:
1   2   3
4   5   6
7   8   9   
I would request you not to send complicated template-based suggestions, as I am in the intermediate level of C++ programming.
Thanks in advance!
User contributions licensed under CC BY-SA 3.0