Я пытаюсь заставить мою программу работать более эффективно, и я полагаю, что исправление этого линейного поиска очень помогло бы с точки зрения скорости, но мне любопытно, как мне изменить это на что-то вроде бинарного поиска, как я полагаю, список не обязательно упорядочен. Есть ли способ упорядочить список на основе его первого аргумента 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;
};
Поиск в просто связанном списке — это O (n), где n
размер списка.
Однако в некоторых реализациях люди используют три указателя списка, один в начале, один в середине и один в конце, так что при поиске они могут ускорить процесс, поэтому вы можете выполнять поиск в Интернете.
НО, если бы я был тобой и был так интересен в ускорении поиска, я бы попробовал другую структуру данных (hash? Like std::unordered_map
) или отсортировать список.
Других решений пока нет …