Иногда легче написать код, когда вы очень хорошо разбираетесь в методах поиска.Имея это в виду, я повторю то, что вы, вероятно, слышали, на случай, если это не будет хорошо объяснено.
Последовательный поиск прост:
1. Set the starting index just before the beginning.
2. If there is a "next" item, check the next item to see if it matches.
2a. If it does match you found the item in your collection.
2b. If it does not match update the starting index to the item you just checked and continue at step 2.
3. If there is no next item, then you searched everything without finding your item.
Бинарный поиск такжепросто:
1. If the unsearched part of your list is empty, then determine you didn't find the item.
2. If the unsearched part of your list is just one element, then check the element to see if it matches the lookup item.
2a. If id does match, you found the item in your list.
2b. If it does not match, the item isn't in your list.
3. If the unsearched part of your list is more than one element, find the element closest to the middle. It is ok to divide two element lists like {2, 4} into {2} 4 {} where 4 is the middle.
3a. If the middle matches the lookup item, you found the item in your list.
3b. If the middle is larger than the lookup item, select the "smaller" side list and repeat the process.
3c. If the middle is smaller than the lookup item, select the "larger" side list and repeat the process.
Преимущество последовательного поиска заключается в том, что ваш элемент в конечном итоге будет найден, даже если список не отсортирован.Преимущество бинарного поиска состоит в том, что вы найдете свой элемент намного быстрее, но список должен быть отсортирован.Например, список из миллиона элементов займет в среднем полмиллиона сравнений, чтобы найти элемент с помощью последовательного поиска;но бинарный поиск займет всего около двадцати сравнений.Это связано с тем, что каждое сравнение в бинарном поиске отбрасывает половину оставшихся возможностей, а каждое сравнение в последовательном поиске отбрасывает только одну возможность.