冒泡排序函数实现不工作

bubble sort function implementation not working

本文关键字:工作 实现 函数 冒泡排序      更新时间:2023-10-16

我有一个问题与冒泡排序。我正在对一个由8个数字组成的数组按降序排序;然而,当打印到屏幕时,第一个数字不在数组中。这就像是一个超出边界的错误,或者打印一些内存内容。谢谢你的帮助。

#include <iostream>
using namespace std;
void sortArray(int nums[]);
void printArray(int nums[]);

int main()
{
    int nums[8] = {3, 6, -19, 5, 5, 0, -2, 99};
    sortArray(nums); 
    printArray(nums);
    system("pause");
    return 0;
}
void sortArray(int nums[])
{
     bool swap;
     int temp;
     do
     {
         swap = false;
         for(int i = 0; i < 8; i++)
         {
                 if(nums[i] < nums[i+1])
                 {
                       temp = nums[i];
                       nums[i] = nums[i+1];
                       nums[i+1] = temp;
                       swap = true;
                 }
         }
     }while(swap);
}
void printArray(int nums[])
{
     for(int i = 0; i < 8; i++)
     {
             cout << nums[i] << ", ";
     }
     cout << endl;
}

访问数组末尾以外的元素:

for(int i = 0; i < 8; i++)
         {
                 if(nums[i] < nums[i+1])

如果i达到7,则i+1越界

顺便说一下,您应该考虑使用std::vector而不是普通数组。

第一个c++课程?我又当上助教了。

int数组,size = 8,即索引0到7。

In your for(int i=0;i<8;如果你试图访问nums[I +1],当I = 7时会发生什么?访问nums[8],对吧?

此外,这不是一个冒泡排序,它接近,但实际上不是。再读一遍课本

     for(int i = 0; i < 8; i++)
     {
             if(nums[i] < nums[i+1])
             {
                   temp = nums[i];
                   nums[i] = nums[i+1];
                   nums[i+1] = temp;
                   swap = true;
             }
     }

i为7时,您正在访问i+1 s的越界