进行气泡排序而不是使用给定的代码将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;
}
}
您似乎已经知道可以使用循环来重复某些操作。如果要重复循环,只需将其放入循环中即可:
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没什么特别的。