Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from datetime import date
- from random import randint
- def sort(dateList):
- gap = len(dateList)
- swapped = True
- while swapped or gap > 1:
- gap = max(1, int(gap / 1.5))
- swapped = False
- for m in range(len(dateList) - gap):
- j = m + gap
- if dateList[m] > dateList[j]:
- dateList[m], dateList[j] = dateList[j], dateList[m]
- swapped = True
- return dateList
- n = 20
- A = []
- for i in range(n):
- A.append(date(randint(1, 2100), randint(1, 12), randint(1, 31)))
- print(A[i].day, A[i].month, A[i].year, "номер - ", i+1)
- print("-----------------------------------------------------------------------------------------------------------")
- sort(A)
- for i in range(n):
- print(A[i].day, A[i].month, A[i].year, "номер - ", i+1)
- print("-----------------------------------------------------------------------------------------------------------")
- print("1 - поиск"
- "2 - бинарный поиск")
- search = int(input())
- if search == 1:
- sort(A)
- print("Поиск по: 1 - день, 2 - месяц, 3 - год")
- find = input()
- if find == '1':
- print("Введите день для поиска")
- day = int(input())
- found = False
- for i in range(n):
- if day == A[i].day:
- print(A[i].day, A[i].month, A[i].year, "номер - ", i + 1)
- found = True
- if not found:
- print("Не найдено")
- if find == '2':
- print("Введите день для поиска")
- month = int(input())
- found = False
- for i in range(n):
- if month == A[i].month:
- print(A[i].day, A[i].month, A[i].year, "номер - ", i + 1)
- found = True
- if not found:
- print("Не найдено")
- if find == '3':
- print("Введите день для поиска")
- year = int(input())
- found = False
- for i in range(n):
- if year == A[i].year:
- print(A[i].day, A[i].month, A[i].year, "номер - ", i + 1)
- found = True
- if not found:
- print("Не найдено")
- if search == 2:
- print("Поиск по 1 - день, 2 - месяц, 3 - год")
- answer = int(input())
- if answer == 1:
- print("Введите день")
- day = int(input())
- count = 0
- start = 0
- middle = len(A) // 2
- end = len(A) - 1
- while start <= end and A[middle].day != day:
- count += 1
- if A[middle].day < day:
- start = middle + 1
- else:
- end = middle - 1
- middle = (end + start) // 2
- if start >= end:
- print(A[middle].day, A[middle].month, A[middle].year, "выполненно операций - ", count)
- else:
- print("Ошибка!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement