我无法理解使用 for 循环 5 次进行气泡排序的逻辑
I can't wrap my head around the logic of using for loop 5 times for bubble sort
有什么更有效的方法来进行冒泡排序,而不是使用给定的代码复制和粘贴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次没有什么特别的。
此外,请注意,这不是编写冒泡排序的最有效方法(例如,您不需要检查已经冒泡的元素(。
相关文章:
- 在气泡排序程序中未声明错误功能
- 气泡排序未正确循环
- 带有枚举方向/类型的气泡排序结构数组
- 在气泡排序中使用递归
- 如何在C++中实现气泡排序?
- 比较迭代器会使程序崩溃,而不会在自定义气泡排序实现中出现错误
- C++气泡排序的问题
- 气泡排序C++ OOP
- OOP 气泡排序C++程序
- 按升序对列表进行排序,C++使用气泡排序
- C++气泡排序
- 此气泡排序代码中的错误是什么?
- 气泡排序 2D 数组
- 如何使用气泡排序从最小到最大对 4 个数组进行排序? C++
- 添加气泡排序代码以排列列表
- 使用向量和气泡排序的动态内存分配
- 带修改(偏移)的气泡排序
- 使用C++进行气泡排序
- 选择排序与气泡排序C++
- 为什么我的气泡排序不适用于双精度数据类型?