此程序崩溃.我找不到错误
This program crashes. I could not find the error
这是一个存储桶排序程序。显示"9"作为输出后,该程序崩溃。我无法识别错误。我想错误应该在创建存储桶索引时,但我无法弄清楚。
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
// Function to sort arr[] of size n using bucket sort
void bucketSort(int arr[], int n)
{
// 1) Create n empty buckets
vector<int> b[n];
// 2) Put array elements in different buckets
for (int i=0; i<n; i++)
{
int bi = arr[i]; // Index in bucket
while(bi > 9){
bi = bi / 10;
}
cout << bi << endl;
b[bi].push_back(arr[i]);
}
// 3) Sort individual buckets
for (int i=0; i<n; i++)
sort(b[i].begin(), b[i].end());
// 4) Concatenate all buckets into arr[]
int index = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < b[i].size(); j++)
arr[index++] = b[i][j];
}
/* Driver program to test above funtion */
int main()
{
int arr[] = {97, 56, 65, 12, 65, 34};
int n = sizeof(arr)/sizeof(arr[0]);
bucketSort(arr, n);
cout << "Sorted array is n";
for (int i=0; i<n; i++)
cout << arr[i] << " ";
return 0;
}
- 您创建了一个由 6 个存储桶组成的数组,名为
b
。 - 在 for 循环的第一次迭代中,计算
bi == 9
。 - 使用
bi == 9
时,b[bi]
在数组末尾之外进行访问。 - 未定义的行为。
相关文章:
- 我在c ++矩阵计算器程序中找不到错误
- 我在代码中找不到错误以找到最大的素因数?
- 在我的应用逻辑中找不到错误
- 在模板类中找不到错误
- 双重释放或损坏错误(找不到错误?
- 在我的 cpp 或头文件中找不到错误,类构建失败
- 在哈希表复制构造函数中找不到错误
- 找不到错误。C++,字符串
- 8谜题代码.我的队列没有填充,我找不到错误的位置
- C++中的预期表达式,但找不到错误
- C++ 将布尔隐式转换为 int 和算术,删除分支,找不到错误
- 找不到错误"invalid conversion from char to const char*"的解决方案
- 在以下代码中找不到错误:- 在 try() 之前预期未限定 id
- 在重载运算符中找不到错误<
- C++ 中的分段错误(核心转储) 找不到错误
- 在使用set_difference算法时找不到错误
- 在 while 循环中找不到错误?
- C++错误LNK2001,找不到错误
- 在我的代码中找不到错误....分段错误
- LNK2005(已定义)找不到错误