C ++:使用LSD基数排序崩溃对字符串进行排序

时间:2015-04-30 21:28:51

标签: c++ arrays string sorting radix-sort

我编写了一些代码,用于使用基数排序对字符串数组进行排序,从最低有效数字开始。此函数假定所有字符串长度相同,每个字符都是小写。

每当我到达为临时数组赋值的循环时,我都会遇到崩溃。你可以在这里看到我的功能:

#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

我猜测我的逻辑失败了,但我无法理解我的生活。

0 个答案:

没有答案