Как можно оптимизировать мою реализацию сортировки строк msd?

156
21 апреля 2022, 12:20

У меня в сортировке есть узкое место, но я не могу его найти, подскажите что можно оптимизирвоать

void MSDSort(std::string* arr, size_t start, size_t end, int d = 0){
    size_t arrSize = end - start;
    const int R = 256;
    std::string *aux = new std::string[arrSize];
    int count[R]{0};
    for (size_t i = start; i < end; i++)
        count[arr[i][d]]++;
    int sum = 0;
    for (size_t i = 0; i < R; i++){
        int temp = count[i];
        count[i] += sum;
        sum += temp;
    }
    for (int i = (int)end - 1; i >= (int)start; i--) {
        aux[--count[arr[i][d]]] = move(arr[i]);
    }
    for (size_t  i = 0; i < arrSize; i++)
        arr[start + i] = move(aux[i]);
    delete [] aux;
    d += 1;
    for (size_t i = 2; i < R; i++){
        if (((start + count[i - 1]) - (start + count[i])) <= 1)
            continue;
        MSDSort(arr, start + count[i - 1], start + count[i], d);
    }
}
READ ALSO
Фильтр для обработки изображения на C++

Фильтр для обработки изображения на C++

Пишу программу, которая сглаживает изображения от шума вида соль-перецВ программе усредняющий фильтр, медианный и Гауссовский

99
Перегрузка операнда ++

Перегрузка операнда ++

Необходимо перегрузить операцию ++ как движение по спискуВ чём ошибка?

115
почувствовать разницу inline и не inline метода

почувствовать разницу inline и не inline метода

подскажите, а как мне изменить тела конструкторов классов A и B, чтобы почувствовать разницу по производительности inline и не inline функций ??? или...

114