12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- # Бинарный поиск
- # Этот алгорит работает только с отсортированными массивами
- def binary_search(list, item):
- low = 0
- high = len(list) - 1
- while low <= high:
- mid = (low + high)//2
- guess = list[mid]
- if guess == item:
- return mid
- if guess > item:
- high = mid - 1
- else:
- low = mid + 1
- return None
- # print(binary_search([1,3,5,7,9,10,14,16,18], 16))
- # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- # Поиск наименьшего элемента массива
- def find_smallest(arr):
- smallest = arr[0]
- smallest_index = 0
- for i in range(1, len(arr)):
- if arr[i] < smallest:
- smallest = arr[i]
- smallest_index = i
- return smallest_index
- # Сортировка выбором
- def selection_sort(arr):
- new_arr = []
- for i in range(len(arr)):
- smallest = find_smallest(arr)
- new_arr.append(arr.pop(smallest))
- return new_arr
- # print(selection_sort([5,3,6,4,7,1,3,2]))
- # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- # Быстрый поиск
- def quick_sort(arr):
- if len(arr) < 2:
- print(f'Return: {arr}')
- return arr
- else:
- pivot = arr[0]
- less = [i for i in arr[1:] if i <= pivot]
- greater = [i for i in arr[1:] if i > pivot]
- print(f'Pivot: {pivot}')
- print(f'Less: {less}')
- print(f'Greater: {greater}')
- return quick_sort(less) + [pivot] + quick_sort(greater)
-
- # print(quick_sort([5,3,6,4,7,1,3,2]))
- def arr_test(arr):
- return [i for i in arr[1:]]
- # print(arr_test([5,3,6,4,7,1,3,2]))
- # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- # Треугольник паскаля
- def triangle_pascale(n):
- tr = []
- for i in range (n + 1):
- tr.append([1] + [0]*n)
- for i in range(1, n + 1):
- for j in range(1, i + 1):
- tr[i][j] = tr[i-1][j] + tr[i-1][j-1]
- for i in range(0, n + 1):
- for j in range(0, i + 1):
- print(tr[i][j], end=' ')
- print()
- triangle_pascale(10)
|