Это довольно странный способ реализации Selection Sort. Насколько я понимаю, вы сделали там несколько ошибок. Во-первых, вы не можете использовать arr.size () в первом случае для l oop, так как это приведет к тому, что второй просто выйдет за пределы go, что приведет к неожиданному поведению. Если бы случайно это были обычные массивы, вы бы получили хорошую ошибку сегментации. Даже при том, что вы не получаете ошибку во время выполнения, это то, что вы должны знать. С другой стороны, основная проблема здесь связана с тем, как вы используете индексы, а также с тем, что вам действительно не нужен второй массив.
Здесь у вас есть пример этого алгоритм.
#include<iostream>
#include<vector>
using namespace std;
int main()
{
vector<int> array(5);
int aux;
array[0]=10;
array[1]=2;
array[2]=45;
array[3]=-5;
array[4]=0;
for(int i=0; i<array.size()-1; i++)
{
for(int j=i+1; j<array.size(); j++)
{
if(array[j]<array[i])
{
aux=array[j];
array[j]=array[i];
array[i]=aux;
}
}
}
}
Кроме того, я бы рекомендовал вам использовать вектор вместо массива, оба являются контейнерами STL, но вектор намного более гибок и полезен, хотя и потребляет некоторую дополнительную память.
Надеюсь, мой ответ был достаточно ясен. Я здесь, если вам нужна дополнительная помощь. Удачи!