如何在 C++ 中对数组进行冒泡排序?
How do you do a Bubble Sort for an Array in C++?
我得到了 4 个数字,我必须输入它们并使用冒泡排序将它们从低到高排序。
这是我目前用于冒泡排序的内容:
void bubble_sort()
{
for (int i=0;i<4;i++)
{
if(num[i]>num[i+1])
{
float temp;
temp=num[i+1];
num[i]=num[i+1];
num[i+1]=temp;
}
}
}
当我使用以下输入输出数组时:3.72、3.92、3.46 和 3.86
我得到:3.72、3.46、3.46、0
代码中出现的一些错误如下
- 以错误的方式交换值。 (正如问题的评论中所指出的)
- 让
j
的值为 3 在这种情况下,当 temp = num[j+1]
为 运行 时它将在索引 4 中拾取垃圾值。
- 只有一个
for
循环,循环只迭代一次。请仔细阅读冒泡排序的工作基础和复杂性,以及它如何使用来自 here 的至少两个循环
现在正确答案的形式是
void bubble_sort(float num[]) {
for (int i=0;i<4;i++) {
for(int j=0;j<3;j++){
if(num[j]>num[j+1])
{
float temp;
temp=num[j+1];
num[j+1]=num[j];
num[j]=temp;
}
}
}
for(int i=0;i<4;i++)
cout<<num[i];
}
我得到了 4 个数字,我必须输入它们并使用冒泡排序将它们从低到高排序。 这是我目前用于冒泡排序的内容:
void bubble_sort()
{
for (int i=0;i<4;i++)
{
if(num[i]>num[i+1])
{
float temp;
temp=num[i+1];
num[i]=num[i+1];
num[i+1]=temp;
}
}
}
当我使用以下输入输出数组时:3.72、3.92、3.46 和 3.86 我得到:3.72、3.46、3.46、0
代码中出现的一些错误如下
- 以错误的方式交换值。 (正如问题的评论中所指出的)
- 让
j
的值为 3 在这种情况下,当temp = num[j+1]
为 运行 时它将在索引 4 中拾取垃圾值。 - 只有一个
for
循环,循环只迭代一次。请仔细阅读冒泡排序的工作基础和复杂性,以及它如何使用来自 here 的至少两个循环
现在正确答案的形式是
void bubble_sort(float num[]) {
for (int i=0;i<4;i++) {
for(int j=0;j<3;j++){
if(num[j]>num[j+1])
{
float temp;
temp=num[j+1];
num[j+1]=num[j];
num[j]=temp;
}
}
}
for(int i=0;i<4;i++)
cout<<num[i];
}