为什么我的排序算法会更改数组值
Why is my sort algorithm changing the array values?
这是一个简单的冒泡排序算法,是我的大型程序的一部分,旨在对doubles数组进行排序。我以前尝试过用合并排序对相同的值进行排序,但得到了相同的输出。我真的没有注意到我错过了什么。有人能给我指一下吗提前感谢!
#include<iostream>
#include<iomanip>
using namespace std;
int const POINTS = 5;
double dataPoints[POINTS] = { 0.1, 0.5, 0.6, 0.2, 0.8 };
void sort(double dataPoints[])
{
int i, j, flag = 1;
int temp;
for (i = 1; (i <= POINTS) && flag; i++)
{
flag = 0;
for (j = 0; j < (POINTS - 1); j++)
{
if (dataPoints[j + 1] > dataPoints[j])
{
temp = dataPoints[j];
dataPoints[j] = dataPoints[j + 1];
dataPoints[j + 1] = temp;
flag = 1;
}
}
}
}
int main()
{
sort(dataPoints);
for (int i = 0; i < POINTS; i++)
{
cout << dataPoints[i] << " ";
}
}
Output:
0.8 0 0 0 0
将double
与类型为int
的临时进行交换。
改为使用:
double temp;
或更好的auto
:
const auto temp = dataPoints[j];
dataPoints[j] = dataPoints[j + 1];
dataPoints[j + 1] = temp;
甚至更好,使用std::swap
:
std::swap(dataPoints[j], dataPoints[j + 1]);
如果允许,您甚至可以使用:
std::sort(std::begin(dataPoints), std::end(dataPoints), std::greater<>{});
将临时变量的数据类型更改为double。
相关文章:
- 关于字符数组,我正在尝试将数组中的每个字符分配给另一个值
- 我可以更新数组中的对象吗?
- 当我在 CLion 中读取数组中的 txt 文件时C++编码问题
- 代码以查找数组中的最大数字,但它仅将第一个数字显示为最大数字. 有人请告诉我为什么
- 从我的2d数组中的一列返回的字符串值被压缩为一个字符串(在Mac os上打开Windows txt文件)
- 我正在丢失动态分配的数组中的元素
- 测量我的随机数数组打印的时间始终显示为 0 秒
- 为什么我在尝试将数组中的值写入 CSV 文件中时会出现段错误
- 我的选择排序代码是否存在导致它跳过数组中的元素的问题?
- 为什么我的程序有时只能正确识别数组中的最高和最低值
- 我将 c++ 矢量数据集转换为 c 数组.我将相同的数据集传递到一个应该给出相同输出的函数中
- 为什么我不能将元素插入数组中的列表?
- 我写了这个简单的代码,应该计算一系列数组元素的最高数量,但结果很奇怪
- 我有一个包含几个重复元素的数组,我想找到最接近数组末尾的重复元素的索引
- 我用于汇总数组元素的 c++ 代码无法正常工作
- 我可以在不循环访问数组/向量的情况下检查数组/向量中的单词吗?
- 我正在尝试计算 char 数组中的内容,直到 null 终止,但每次编译时,我都会得到一个比我的数组大的数字
- 如何修复我的代码并使其遍历 2D 数组中的所有行?(C++)
- 为什么我的数组代码的反向不能正常工作
- 如何正确删除ptrs数组?我的析构函数似乎丢失了实际的对象