c++ - 如何在 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 在这种情况下,它将在运行时在索引 4 中拾取垃圾值temp = num[j+1]
。 - 只有一个
for
循环遍历循环一次。请阅读有关冒泡排序的工作基础和复杂性的基础知识,以及它如何从这里使用至少两个循环
现在正确的答案将是形式
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];
}
推荐阅读
- ios - 使用结构协议的 MemoryLayout 的奇怪案例,报告了不同的大小
- python - 当健康达到0时试图在pygame中弹出敌人
- javascript - 样式被 Material-UI 样式覆盖
- heroku - Jhipster 部署到 heroku 时出错。在类路径资源中定义名称为“servletEndpointRegistrar”的 bean 创建错误
- javascript - 从对象数组中,将属性提取到多个数组中(每个属性一个)?
- c++ - boost asio - io_service 不要等待连接到线程
- java - 使用另一个 JavaFX 类 Java 中的方法
- amazon-web-services - Docker-compose blkio:device_write_iops 不适用于 AWS/EBS 实例
- python - 如何在 Python 中模拟 SAS PROC SCORE 函数
- node.js - 带有标头的 Express JS 重定向