排序后丢失"一些"十进制值

hai*_*_vi 0 c++ sorting decimal

这是一个奇怪的问题(反正对我来说).

我正在为班级做基本的排序任务.每种排序都有效,除了排序之后它会删除某些值的小数点后的值.该阵列来自一个单独的文件.

预先排序将是:[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;
} 
Run Code Online (Sandbox Code Playgroud)

好消息是我的所有工作都有效,我只需弄清楚为什么这些数字没有正确显示.

cad*_*luk 5

将定义更改temp

double temp;
Run Code Online (Sandbox Code Playgroud)

指定数组中的值时temp,将截断该值.因此,小数部分被切断.
在一个double幸运地保持它的出现充分的价值,因为它没有被分配到temp; 它已经是正确的顺序.


笔记:


1感谢@PeteBecker!