Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # method двух указателей основаный на оптимальном квиксорте
- def merge_sort(left, right):
- i = j = 0
- stack = []
- while i < len(left) and j < len(right):
- if left[i] < right[j]:
- stack.append(left[i])
- i += 1
- else:
- stack.append(right[j])
- j += 1
- while i < len(left):
- stack.append(left[i])
- i += 1
- while j < len(right):
- stack.append(right[j])
- j += 1
- return stack
- def razbienie(array):
- if len(array) < 2:
- return array
- else:
- index = len(array) // 2
- left = razbienie(array[:index])
- right = razbienie(array[index:])
- return merge_sort(left, right)
- def quick_sort(array):
- if len(array) < 2:
- return array
- elif len(array) < 32:
- array = razbienie(array)
- return array
- else:
- element = array[len(array) // 2]
- left = [x for x in array if x < element]
- middle = [x for x in array if x == element]
- right = [x for x in array if x > element]
- return quick_sort(left) + middle + quick_sort(right)
- def double_ukazatelia(array, digit):
- i = 0
- j = len(array) - 1
- while i <= j:
- if array[i] + array[j] < digit:
- i += 1
- elif array[i] + array[j] > digit:
- j -= 1
- else:
- return ('We found your digit as summ of 2 digits -> ', array[i], array[j])
- return False
- array = list(map(int, input().split())) # inter your list for sorting
- print(quick_sort(array))
- digit_for_answer = int(input('Print digit that we need to find as summ of 2 digits ___ > '))
- print(double_ukazatelia(array, digit_for_answer))
Advertisement
Add Comment
Please, Sign In to add comment