Tenho feito alguns ensaios para uma entrevista de emprego. Comecei com o básico: QuickSort. Eu escolhi Python, porque é uma linguagem realmente ótima para uma entrevista. Se você tiver uma opção, vá sempre com Python. A sintaxe clara e concisa permite que você se concentre no problema e ajuda a gerenciar o espaço no quadro branco, que é um verdadeiro recurso assustador durante a entrevista. Quando terminei, pesquisei outras soluções possíveis. Infelizmente, a maioria deles era complicada demais. Aqui está o meu código:
from random import randrange
def partition(lst, start, end, pivot):
lst[pivot], lst[end] = lst[end], lst[pivot]
store_index = start
for i in xrange(start, end):
if lst[i] < lst[end]:
lst[i], lst[store_index] = lst[store_index], lst[i]
store_index += 1
lst[store_index], lst[end] = lst[end], lst[store_index]
return store_index
def quick_sort(lst, start, end):
if start >= end:
return lst
pivot = randrange(start, end + 1)
new_pivot = partition(lst, start, end, pivot)
quick_sort(lst, start, new_pivot - 1)
quick_sort(lst, new_pivot + 1, end)
def sort(lst):
quick_sort(lst, 0, len(lst) - 1)
return lst
print sort([])
print sort([1, 2, 3, 4])
print sort([-5, 3, -2, 3, 19, 5])