Я не могу обернуть голову вокруг logi c использования для l oop 5 раз для сортировки пузырьков - PullRequest
0 голосов
/ 07 мая 2020

Каков более эффективный способ выполнения пузырьковой сортировки вместо того, чтобы копировать и вставлять for l oop 5 раз с использованием приведенного кода?

My logi c здесь, чтобы проверить, есть ли массив [1] (9) больше, чем array [2] (6), поскольку он больше, элементы меняются местами. Но как только он достигнет конца массива, мне нужно скопировать и вставить for l oop, чтобы алгоритм пузырьковой сортировки снова начал проверять массив.

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

#include <iostream>

int main()
{
    int array[] = { 9, 6, 2, 8, 3, 1, 7, 5, 4 };

    int temp;

    for (int i = 0; i < 8; i++)
    {
        if (array[i] > array[i + 1])
        {
            temp = array[i];
            array[i] = array[i + 1];
            array[i + 1] = temp;
        }
    }

    for (int i = 0; i < 8; i++)
    {
        if (array[i] > array[i + 1])
        {
            temp = array[i];
            array[i] = array[i + 1];
            array[i + 1] = temp;
        }
    }

    for (int i = 0; i < 8; i++)
    {
        if (array[i] > array[i + 1])
        {
            temp = array[i];
            array[i] = array[i + 1];
            array[i + 1] = temp;
        }
    }

    for (int i = 0; i < 8; i++)
    {
        if (array[i] > array[i + 1])
        {
            temp = array[i];
            array[i] = array[i + 1];
            array[i + 1] = temp;
        }
    }

    for (int i = 0; i < 8; i++)
    {
        if (array[i] > array[i + 1])
        {
            temp = array[i];
            array[i] = array[i + 1];
            array[i + 1] = temp;
        }
    }

    for (int i = 0; i < 8; i++)
    {
        std::cout << array[i] << std::endl;
    }

}

1 Ответ

2 голосов
/ 07 мая 2020

Кажется, вы уже знаете, что можете что-то повторить, используя al oop. Если вы хотите повторить al oop, просто поместите его в al oop:

for (int j = 0; j < 8; j++)
  for (int i = 0; i < 8; i++)
    {
        if (array[i] > array[i + 1])
        {
            temp = array[i];
            array[i] = array[i + 1];
            array[i + 1] = temp;
        }
    }

Я не понимаю, почему вы хотите сделать это всего 5 раз, но в 5 нет ничего особенного. .

Также обратите внимание, что это не самый эффективный способ написать пузырьковую сортировку (например, вам не нужно проверять элементы, которые уже были пузырьками).

...