I am having a tough time trying to follow the logic here as to why it is not working correctly expected output : 1 5 6 8
any help is greatly appreciated
Update: I got selection sort and insertion sort mixed up
OUTPUT:
unaltered array
5  8  1  6
1  -858993460 -858993460  6
#pragma once
#include <iostream>
using namespace std;
void swap(int &a,int &b)
{
 int temp;
 temp = b;
 b = a;
 a = temp;
}
void SelectionSort(int *arr,int n)
{
 cout << "SelectionSORT1\n";
 int i;
 for (i = 0; i < n - 2; i++) //-1 ||-2//
 {
  int firstIndex;
  firstIndex = arr[i];
    
    int j;
    for (j = i + 1;j < n - 1;j++) 
    {
        if (arr[j] < arr[firstIndex])
        {
            firstIndex = j;
            //cout << firstIndex;
            
        }
        swap(arr[i], arr[firstIndex]);
       }
    
        cout << "SelectionSORT2\n";
        }
cout << "SelectionSORT3\n";
}
#include <iostream>
#include "SelectionSort.h"
using namespace std;
int main()
{
 int array[] = { 5,8,1,6 };
 int size = { sizeof(array) / sizeof(array[0]) };
 cout << "unaltered array\n";
for (int i = 0; i < 4; i++)
{
    cout << array[i] << "  ";
}
cout << endl;
SelectionSort(array, size);
for (int i = 0; i < 4; i++)
{
    cout << array[i] << "  ";
}
cout << endl;
}
UPDATE
#pragma once
#include <iostream>
using namespace std;
void swap(int &a,int &b)
{
 int temp;
 temp = b;
 b = a;
 a = temp;
}
void SelectionSort(int *arr,int n)
{
 cout << "Selection SORT1\n";
 int I;
 for (i = 0; i < n ; i++) //-1 ||-2//
 {
    int firstIndex;
    firstIndex = i;
    int j;
    for (j = i + 1;j < n  ;j++) 
    {
        std::cerr << j << ' ' << firstIndex << '\n';
        if (arr[j] < arr[firstIndex])
        {
            firstIndex = j;
            
            
        }
        swap(arr[i], arr[firstIndex]);
    }
    
    cout << "  \n";
 }
cout << "  \n";
}
#include <iostream>
#include "BubbleSort.h"
#include "InsertionSort.h"
#include "SelectionSort.h"
using namespace std;
int main()
{
 int array[] = { 5,8,1,6 };
 int size = { sizeof(array) / sizeof(array[0]) };
 cout << "unaltered array\n";
 for (int i = 0; i < size; i++)
 {
    cout << array[I] << "  ";
 }
 cout << endl;
 SelectionSort(array, size);
 for (int i = 0; i < size; i++)
 {
    cout << array[I] << "  ";
 }
 cout << endl;
unaltered array
5  8  1  6
SelectionSORT1
1 0
2 0
3 2
2 1
3 2
3 2
5 6 1 8
 
     
    