Более быстрый способ поиска в списке?

Я пытаюсь заставить мою программу работать более эффективно, и я полагаю, что исправление этого линейного поиска очень помогло бы с точки зрения скорости, но мне любопытно, как мне изменить это на что-то вроде бинарного поиска, как я полагаю, список не обязательно упорядочен. Есть ли способ упорядочить список на основе его первого аргумента key?

С чем я сейчас работаю:

int* key_sequences::data(int key){
for(it=myList.begin(); it!=myList.end(); ++it){
if(it->first==key){
return &(it->second[0]);
}
}
return nullptr;
};

0

Решение

Поиск в просто связанном списке — это O (n), где n размер списка.

Однако в некоторых реализациях люди используют три указателя списка, один в начале, один в середине и один в конце, так что при поиске они могут ускорить процесс, поэтому вы можете выполнять поиск в Интернете.

НО, если бы я был тобой и был так интересен в ускорении поиска, я бы попробовал другую структуру данных (hash? Like std::unordered_map) или отсортировать список.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]