Бинарный поиск для строк

242
16 апреля 2017, 02:15

Не может найти нужный элемент в отсортированном массиве.

Алгоритм сортировки для строк:

AnsiString *words = new AnsiString[150];
AnsiString sortArray[150][150];
int *firstLetter = new int[150];
int *counts = new int[150];
for (int i = 0; i < n; i++)
{
        counts[i] = 0;
        words[i] = StringGrid1->Cells[i][0];
        firstLetter[i] = words[i][1];
        for(int j = 122; j >= 97; j--)
        {
                if(firstLetter[i] == j)
                {
                        sortArray[j][counts[j]] = words[i];
                        counts[j]++;
                }
        }
}
for (int i = 122; i >= 97; i--)
{
        for(int j = 0; j < counts[i]; j++)
                for(int k = 0; k < counts[i] - 1; k++)
                {
                        char* s1 = sortArray[i][k].c_str();
                        char* s2 = sortArray[i][k+1].c_str();
                        if(strcmp(s1,s2) > 0)
                        {
                                AnsiString temp = sortArray[i][k];
                                sortArray[i][k] = sortArray[i][k + 1];
                                sortArray[i][k + 1] = temp;
                        }
                }
}
int currentMemo = 0;
for (int i = 122; i >=97; i--)
{
        for(int j = counts[i] -  1; j > -1; j--)
        {
                 StringGrid1->Cells[currentMemo][0] = sortArray[i][j];
                 currentMemo++;
        }
}

Алгоритм поиска.

  int binary_search(AnsiString* strlist, AnsiString key)
  int L = 0;
  int R = n;
  int m = L;
  do
  {
    if (strcmp(strlist[m].c_str(), key.c_str()) == 0) return m;
    if (strcmp(strlist[m].c_str(), key.c_str()) > 0) R = m;
    if (strcmp(strlist[m].c_str(), key.c_str()) < 0) L = m;
    m = (L + R)/2;
  } while ((R - L) != 1);
return -1;
}
READ ALSO
Программа падает еще не запустившись

Программа падает еще не запустившись

Clion 20171 Пытаюсь запустить Hello world

201
C++ Mysql Неразрешенные внешние символы

C++ Mysql Неразрешенные внешние символы

Всем приветПерерыл пол интернета, проблему так и не могу решить

211
Парсинг запущенного приложения c++

Парсинг запущенного приложения c++

Появилась острая необходимость написать программку которая будет сидеть в трэе и следить за запущенной игрой, считывать параметры интерфейса...

202
В чем разница между pageX/Y, clientX/Y, screenX/Y в Javascript?

В чем разница между pageX/Y, clientX/Y, screenX/Y в Javascript?

Примеры с некоторыми визуальными оформлением будут очень полезны

211