我编写了一些代码,用于使用基数排序对字符串数组进行排序,从最低有效数字开始。此函数假定所有字符串长度相同,每个字符都是小写。
每当我到达为临时数组赋值的循环时,我都会遇到崩溃。你可以在这里看到我的功能:
#ifndef RADIX_H
#define RADIX_H
#include <string>
#include <iostream>
using namespace std;
void lsd_string_radix(string array[], int array_size, int max_chars)
{
string *temp = new string[array_size];
for(int i = max_chars - 1; i >= 0; i--)
{
int count[26] = {0};
for(int j = 0; j < array_size; j++)
{
count[static_cast<int>(array[j][i]) - 97]++;
}
for(int j = 1; j <= 26; j++)
{
count[j] += count[j - 1];
}
for(int j = 0; j < array_size; j++)
{
temp[count[static_cast<int>(array[j][i])]++] = array[j]; // crashes here
}
for(int j = 0; j < array_size; j++)
{
array[j] = temp[j];
}
}
}
#endif
我猜测我的逻辑失败了,但我无法理解我的生活。