сортировка по возрастанию - сортировка по пузырькам - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь расположить мой массив в порядке возрастания, но он дает мне другое значение:

#include <iostream>

int main ()
{
    const int size = 5;
                //    0  1  2  3  4
    int arr[size] = {50,20,54,12,23};

    for (int i=0; i<5; i++) //! bubble sort ascending order
    {
        for (int j=i; j<5; j++)
        {   //      50        20
            if (arr[j] > arr[j+1])
            {
                int temp = arr [j+1];
                arr [j+1] = arr [j];
                arr [j] = temp;
            }
        }
    }

    for (int i=0; i<5; i++)
    {
        std::cout<<arr[i]<<" ";
    }

    return 0;
}

Тот факт, что он не работает, может иметь значение пустого массива (обр[6]) в конце цикла, который портит общее значение?Если это так, он должен иметь возможность сортировки до последнего размера массива, но вместо этого он дает другой вывод

Вывод: 20 12 0 23 50

1 Ответ

0 голосов
/ 25 февраля 2019

Чтобы избежать проблем со связью, измените:

  • i<5 на size-1
  • j<5 на size-1-i
  • j=i до j=0

Код:

int main ()
{
    const int size = 5;
                //    0  1  2  3  4
    int arr[size] = {50,20,54,12,23};

    for (int i=0; i<size-1; i++) //! bubble sort ascending order
    {
        for (int j=0; j<size-1-i; j++)
        {   //      50        20
            if (arr[j] > arr[j+1])
            {
                int temp = arr [j+1];
                arr [j+1] = arr [j];
                arr [j] = temp;
            }
        }
    }

    for (int i=0; i<5; i++)
    {
        std::cout<<arr[i]<<" ";
    }

    return 0;
}
...