我无法绕过使用for循环5次进行冒泡排序的逻辑

问题描述 投票:0回答:1

进行气泡排序而不是使用给定的代码将for循环复制并粘贴5次,更有效的方法是什么?

我的逻辑是检查array [1](9)是否大于array [2](6),因为它更大,它将交换元素。但是一旦到达数组末尾,我就必须复制并粘贴for循环,这样气泡排序算法才能重新开始检查数组。

我没有使用变量,而是动态分配,因为它更容易理解。

#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;
    }

}
c++ algorithm bubble-sort
1个回答
0
投票

您似乎已经知道可以使用循环来重复某些操作。如果要重复循环,只需将其放入循环中即可:

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没什么特别的。

© www.soinside.com 2019 - 2024. All rights reserved.