我无法理解使用 for 循环 5 次进行气泡排序的逻辑

I can't wrap my head around the logic of using for loop 5 times for bubble sort

本文关键字:气泡 排序 循环 for      更新时间:2024-05-23

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

我在这里的逻辑是检查数组[1](9(是否大于数组[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;
}
}

您似乎已经知道可以通过使用循环来重复某些内容。如果你想重复一个循环,就把它放在一个循环中:

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

此外,请注意,这不是编写冒泡排序的最有效方法(例如,您不需要检查已经冒泡的元素(。