Как я могу получить отсортированный список путем более близкого соответствия? - PullRequest
0 голосов
/ 15 февраля 2010

Какой алгоритм сортировки можно использовать для получения более близкого и приблизительного списка соответствия с заданной строкой вход:

  1. список строк
  2. tobesearch_str

1 Ответ

5 голосов
/ 15 февраля 2010

Мое понимание того, что вы хотите сделать, таково:

  1. У вас есть список TCL, который содержит несколько строк
  2. У вас есть строка поиска, которая точно не соответствует ни одной из строк в вашем списке
  3. Вы хотите отсортировать строки в списке по их близости к строке поиска.

Одним из способов измерения расстояния между двумя строками является правка или расстояние Левевштейна . В вики TCL есть страница, которая дает реализацию TCL этого алгоритма . Затем вы можете создать список списков, в котором каждый подсписок содержит строку кандидата и его расстояние от строки поиска. Приведенный ниже код показывает, как отсортировать этот список с помощью команды lsort:

set myList [list  {AADD 3} {AABC 2} {AAAB 1} {DCBA 4}]
puts $myList
set sortedList [lsort -integer -index 1 $myList]
puts $sortedList

Это приводит к следующему выводу:

{AADD 3} {AABC 2} {AAAB 1} {DCBA 4}
{AAAB 1} {AABC 2} {AADD 3} {DCBA 4}

Это тот тип, к которому вы стремитесь, или я неправильно истолковал то, что вы пытаетесь сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...