Advertisement
Guest User

Untitled

a guest
Jan 21st, 2020
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.79 KB | None | 0 0
  1. from datetime import date
  2. from random import randint
  3.  
  4.  
  5. def sort(dateList):
  6.     gap = len(dateList)
  7.     swapped = True
  8.     while swapped or gap > 1:
  9.         gap = max(1, int(gap / 1.5))
  10.         swapped = False
  11.         for m in range(len(dateList) - gap):
  12.             j = m + gap
  13.             if dateList[m] > dateList[j]:
  14.                 dateList[m], dateList[j] = dateList[j], dateList[m]
  15.                 swapped = True
  16.     return dateList
  17.  
  18.  
  19. n = 20
  20. A = []
  21. for i in range(n):
  22.     A.append(date(randint(1, 2100), randint(1, 12), randint(1, 31)))
  23.  
  24.     print(A[i].day, A[i].month, A[i].year, "номер - ", i + 1)
  25. print("-----------------------------------------------------------------------------------------------------------")
  26.  
  27. sort(A)
  28. for i in range(n):
  29.     print(A[i].day, A[i].month, A[i].year, "номер - ", i + 1)
  30.  
  31. print("-----------------------------------------------------------------------------------------------------------")
  32. print("1 - поиск\n2 - бинарный поиск")
  33. search = int(input())
  34. if search == 1:
  35.     print("Поиск по: 1 - день, 2 - месяц, 3 - год")
  36.     find = input()
  37.     if find == '1':
  38.         print("Введите день для поиска")
  39.         day = int(input())
  40.         found = False
  41.         for i in range(n):
  42.             if day == A[i].day:
  43.                 print(A[i].day, A[i].month, A[i].year, "номер - ", i + 1)
  44.                 found = True
  45.         if not found:
  46.             print("Не найдено")
  47.     if find == '2':
  48.         print("Введите день для поиска")
  49.         month = int(input())
  50.         found = False
  51.         for i in range(n):
  52.             if month == A[i].month:
  53.                 print(A[i].day, A[i].month, A[i].year, "номер - ", i + 1)
  54.                 found = True
  55.         if not found:
  56.             print("Не найдено")
  57.     if find == '3':
  58.         print("Введите день для поиска")
  59.         year = int(input())
  60.         found = False
  61.         for i in range(n):
  62.             if year == A[i].year:
  63.                 print(A[i].day, A[i].month, A[i].year, "номер - ", i + 1)
  64.                 found = True
  65.         if not found:
  66.             print("Не найдено")
  67. if search == 2:
  68.     print("Поиск по 1 - день, 2 - месяц, 3 - год")
  69.     answer = int(input())
  70.     if answer == 1:
  71.         number = int(input("Введите день: "))
  72.         low = 0
  73.         high = n - 1
  74.         while low <= high:
  75.             mid = (low + high) // 2
  76.             if number < A[mid].day:
  77.                 high = mid - 1
  78.             elif number > A[mid].day:
  79.                 low = mid + 1
  80.             else:
  81.                 print("Ошибка")
  82.                 break
  83.         else:
  84.             print("Номер = ", mid)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement