Мин и Макс списка в Python (без использования функции мин / макс)
Мне было интересно, если есть способ найти мин & max списка без использования функций min / max в Python. Поэтому я написал небольшой код для того же, используя рекурсию. Моя логика очень наивна: я делаю два стека (min_stack и max_stack), которые отслеживают минимум и максимум во время каждого рекурсивного вызова. У меня есть два вопроса:
Может ли кто-нибудь помочь мне оценить сложность моего кода?Есть лучший способ сделать это? Будет ли сортировка списка с использованием mergesort / quicksort и выбор первого и последнего элемента даст лучшую производительность?Спасибо
Вот моя попытка в Python:
minimum = []
maximum = []
# Defining Stack Class
class Stack:
def __init__(self) :
self.items = []
def push(self, item) :
self.items.append(item)
def pop(self) :
return self.items.pop()
def access(self, index):
return self.items[index]
def isEmpty(self) :
return (self.items == [])
def length(self):
return len(self.items)
def minmax(input_list):
# make two stacks, one for min and one for max
min_stack = Stack()
max_stack = Stack()
# comparing the first two elements of the list and putting them in appropriate stack
if input_list[0] 0:
maxlist.append(max_stack.pop())
if len(minlist) > 1:
minmax(minlist)
else:
minimum.append(minlist)
if len(maxlist) > 1:
minmax(maxlist)
else:
maximum.append(maxlist)
def main():
input_list = [2, 0, 2, 7, 5, -1, -2]
print 'Input List is: ', input_list
minmax(input_list)
print 'Global Minimum is: ', minimum[0]
print 'Global Maximum is: ', maximum[len(maximum)-1]
if __name__ == "__main__":
main()