The most efficient way is for the list to be already sorted, and then doing the binary-find. However as the list is unsorted, you will need to sort it before doing the binary-find. As usual with school questions, you need to make assumptions with insufficient specifications. The "most efficient" depends on what sort technique is used, how many members in the array, and how much memory is available. If we assume that the sort happens instantly, then answer (e) is correct. If the array only has 2 members, obviously answer (d) will be correct.