C 气泡排序:最大数字变为随机
C++ Bubble Sort: Biggest number becomes random
我正在从事学校作业,该任务是按上升顺序对数组进行分类。我遇到了泡沫分类的麻烦。当数组开始排序时,它确实排序,但是数组的最大整数被切换到随机整数。
不要介意选择变量和输入。该任务应该有可能选择您要分类上升还是下降。在此代码中,我只达到了上升排序。
我正在打印每次运行的阵列,以查看气泡排序的工作原理。
为什么最大的数字切换到-13248 ???使用Cygwin编译器,如果任何人都知道这是一个很好的信息。
int main()
{
int number[] = {900,800,700,697,512,455,318,217,143,32};
int swapHolder = -1;
int end = 10;
int length = 10;
string choice;
cout << "This is an array of ten integers." << endl;
for(int i=0; i<10; i++)
{
cout << number[i] << ", ";
}
cout << endl;
cout << "Choose whether you want to sort the array in ascending or descending order." << endl;
cout << "Type ASC for ascending or DESC for descending." << endl;
cin >> choice;
if(choice == "ASC")
{
for(int counter = length - 1; counter >= 0; counter--)
{
for(int index = 0; index < end; index++)
{
if (number[index] > number[index+1])
{
swapHolder = number[index+1];
number[index+1] = number[index];
number[index] = swapHolder;
}
}
for(int index = 0; index < 10; index++)
{
cout << number[index] << ", ";
}
cout << endl;
end--;
}
}
return 0;
}
输出:
从CMD
您超出了数组的边界,并在该数组之后以(非初始化的)值交换。请注意,您的数组包含10个元素,即0..9
,并且不允许访问number[10]
。在您的代码中,index
运行到9
,并且您访问number[index+1]
,这实际上意味着number[10]
然后:
int end = 10;
for(int index = 0; index < end; index++)
{
if (number[index] > number[index+1])
{
swapHolder = number[index+1];
number[index+1] = number[index];
number[index] = swapHolder;
}
}
尽管实际上是未定义的行为,但常见的行为是程序崩溃或访问(并使用)尚未初始化的内存,因此包含一些"随机"值,例如-13248
。
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 在将数字随机生成为数组期间从内存输出随机数的数组
- 将随机生成的数字添加到数组 + 对这些数组求平均值
- 在C++中随机生成 20 个非重复数字
- 为什么我C++得到这个随机的奇怪数字
- C++:创建1000次唯一的随机分布,在任何分布中都没有重复的数字
- 如何编写一个递归函数,以随机的方式混淆从0到6的数字
- 奇怪的数字随机出现在输出中.(C++)
- 生成随机长度的数字字符串
- 随机生成的输出中有多少位数字 1、2、3
- 生成随机字符/数字
- 在随机生成的数组中查找重复的连续数字
- C++ 制作一个随机数字/字母生成器,代码中有问题
- 随机生成数字无法正常工作
- 我可以在不指定数字分布的情况下使用随机生成器吗?
- 随机函数在循环中调用时返回相同的数字!C++
- 保证在随机生成的数字中保证三位数
- 从C 到C#调用INT []显示随机大数字,而不是原始数组成员
- 随机数字双重类型
- c++随机数生成器:如何在每次执行时使数字随机