冒泡排序函数实现不工作
bubble sort function implementation not working
我有一个问题与冒泡排序。我正在对一个由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的越界
相关文章:
- CV_OCL_RUN宏如何在OpenCV(版本3.4.5)的goodFeaturesToTrack实现中工作?
- 实现 DFS 在较短的输入下工作正常,但在较大的输入下会抛出分段错误
- nth_element基于修改后的quick_sort实现,无法按预期工作
- 这个数组交集的实现是如何工作的
- 查找表究竟是如何工作的,以及如何实现它们
- 只有第一个缓冲区可以在C++中实现的Double缓冲区中工作
- 尝试实现二叉搜索算法,似乎无法使其工作
- popen() 如何工作以及如何在 Linux 上实现它到 C++ 代码中
- opengl32.lib如何在Windows(仅1.1版本)上工作?它是否真正实现了OpenGL函数
- 在 gcc 上自己的元组实现段错误,同时在 clang 中工作
- 运算符 [] 函数的实现是如何工作的
- 如何以相同的方法在子类中超载的相同方法来实现工作变量参数方法
- 实现快速排序,几乎可以工作但不能
- 在Graph实现中,对和向量是如何工作的
- 在C 中实现此类工作流程的最佳方法
- 这种珠子排序算法的 c++ 实现是如何工作的
- 有可能实现一个与数组而不是单个对象一起工作的内存池吗
- 我正试图在我的SFML Platformer中实现双跳,但它并没有按预期的方式工作
- C++,当每个工作线程都必须执行几个不同的任务时,如何为任务实现线程池
- 解释在opencv中实现的阴影检测代码的工作原理