排序后丢失"some"十进制值
Losing "some" decimal values after sorting
这是一个奇怪的问题(无论如何对我来说)。
我正在为班级做一个基本的排序作业。每种排序都在工作,除了在排序后它会删除某些值的小数点之后的值。阵列来自单独的文件。
预排序为:[1.25, 3.45, 6.3, 2.7]
排序后:[1, 2, 3.45, 6]
这对我来说完全令人困惑,因为它不会影响所有这些。所以这是我的好泡泡排序。(这是我能发布的最短的一张)
void bubbleSort(double bubAray[], int size){
int i=0;
int j=0;
int count=0;
int temp;
bool swap = true;
cout <<"Pre Bubblesort" <<endl;
for(i=0; i<size; i++)
cout <<bubAray[i] <<endl;;
while (swap) {
swap=false;
j++;
for(int i=0; i<size-j; i++){
count++;
if(bubAray[i]>bubAray[i+1]){
temp=bubAray[i];
bubAray[i]=bubAray[i+1];
bubAray[i+1]=temp;
swap = true;
}
}
}
cout <<endl <<"Final Bubble Sort" <<endl <<endl;
for(i=0; i<size; i++)
cout <<bubAray[i] <<endl;
cout <<endl <<"Number of Bubble Sort Comparisons = " <<count <<endl;
}
好消息是我所有的排序都有效,我只需要弄清楚为什么这些数字没有正确显示。
将temp
的定义更改为
double temp;
当数组中的值被赋值给temp
时,它会被截断。因此,小数部分被切断。double
幸运地保持其全部值的那个出现是因为它没有分配给temp
;它已经按正确的顺序排列了。
笔记:
尽可能使用C++标准库;不要重新发明轮子。因此,请改用
std::swap
1:std::swap(bubArray[i], bubArray[i + 1]);
1 感谢@PeteBecker!
相关文章:
- visual在c++中将十进制数转换为二进制数
- C++十进制到二进制,如何转换
- 计算十进制 c++ 之后的数字
- C++从二进制转换为十进制数
- 有没有办法通过使用十进制 ASCII 代码自动类型扣除来获取字符?
- 为什么有时我输入一个整数,程序将第一个输入的数字打印成十进制数?
- Geeksforgeeks C 程序故障排除:IEE 754 表示法为十进制
- cin 的十进制输入验证?
- 我编写了代码将十进制分数转换为其二进制等效数.它编译得很好,但在执行时挂起
- 将分数转换为十进制数并对其进行排序
- uint8_t同一二进制文件的不同十进制值
- 如何打印大于"无符号长长"的"std::bitset"的十进制值?
- 调用方如何知道 VARIANT 中何时有十进制?
- 将字符串(可以是十进制字符串或十六进制字符串)转换为整数C++
- 十进制到二进制转换器 c++
- 使用标准库计算字符串中的十进制数
- 如何在C ++中将二进制字符串128位转换为十进制字符串?
- 如何计算整数的十进制数字?
- (第 1 位 + 第 2 位)以十进制数表示
- 排序后丢失"some"十进制值