Я написал эту программу для сортировки пары чисел на основе четного индекса в порядке возрастания. Например; «1,4,15,3» будет «15,3,1,4» после сортировки. Сортировка работает правильно, но проблема, с которой я столкнулся, заключалась в том, что внутренний l oop сравнивал элементы за пределами размера массива. Это сравнивается со случайным числом. Я не знаю точное время работы l oop (я пробовал размер - 3). Пожалуйста, помогите мне исправить эту ошибку. Вот код.
#include <iostream>
void ssort(int arr[], int arrSize)
{
int j, k;
bool flag;
do
{
flag = false;
for (int i = 0; i <arrSize; i++) //Runs 10 times
{
if (arr[i+1] > arr[i+3]) //compare the 2nd element with 4th
{
j = arr[i+2]; //j holds 3rd element
k = arr[i+3]; //k holds 4th element
arr[i+2] = arr[i]; //3rd element is now 1st element
arr[i+3] = arr[i+1]; //fourth element is now 2nd element
arr[i] = j; //1st is now 3rd element
arr[i+1] = k; //2nd is now fourth element
flag = true;
}
}
}
while (flag);
}
int main()
{
int arr[10] = {1,5,2,15,10,4,15,23,16,15};
std::cout <<"Unsorted array \n";
for (int i: arr)
{
std::cout <<i <<" ";
}
std::cout <<"\n";
ssort(arr,10);
std::cout <<"Sorted \n";
for (int i: arr)
{
std::cout <<i <<" ";
}
return 0;
}