Псевдокод сортировки списка строк без использования циклов - PullRequest
0 голосов
/ 29 января 2019

Я пытался придумать алгоритм, который сортировал бы список строк по его первым 4 символам (скажем, каждой строке из файла), без использования обычных методов циклирования, таких как while, for.Примером входных данных может быть:

1231COME1900123
1233COME1902030
2031COME1923919
1231GO 1231203
1233GO 1932911
2031GO 1239391

* 1013Дело в том, что мы не знаем, сколько записей может быть заранее.И каждый 4-значный идентификационный номер может иметь несколько записей COME и GO.Но они отсортированы, как указано выше, заранее.И я хочу отсортировать файл по 4-значному идентификационному номеру.И добиться этого:

1231COME1900123
1231GO 1231203
1233COME1902030
1233GO 1932911
2031COME1923919
2031GO 1239391

Единственный логический комментарийЯ могу сказать, что мы должны использовать рекурсивный способ для чтения записей, но сортировка немного сложна для меня.Также можно использовать GOTO.Есть идеи?

1 Ответ

0 голосов
/ 29 января 2019

Предполагая, что первые 4 символа каждой записи всегда являются цифрами, вы делаете следующее:

  1. Создайте список длиной 10000, где каждый элемент может содержать пару значений.
  2. Введите этот элемент списка на основе первых 4 цифр.
  3. Форма отдельных элементов будет следующей -> [COME_ELEMENT, GO_ELEMENT] .
  4. Каждый COME_ELEMENT и GO_ELEMENT сам по себе является списком, длина которого равна максимальному значению + 1, которое может появляться после слов COME & GO .
  5. Теперь, когда строка поступает, разбейте ее на первые 4 цифры.Теперь перейдите к этому элементу списка.
  6. После этого проверьте, идет ли это или идет.
  7. Если это идет (предположим), то определите число после слова go .
  8. Вставьте строку по индексу (определенному на 7-м шаге) во внутренний список.
  9. Когда вы закончите вставку значений, просто обойдите непустые элементы.

Полученный таким образом результат будет содержать отсортированный порядок, который вам требуется, без использования циклов.

...