Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.96 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 - поиск"
  33. "2 - бинарный поиск")
  34. search = int(input())
  35. if search == 1:
  36. sort(A)
  37. print("Поиск по: 1 - день, 2 - месяц, 3 - год")
  38. find = input()
  39. if find == '1':
  40. print("Введите день для поиска")
  41. day = int(input())
  42. found = False
  43. for i in range(n):
  44. if day == A[i].day:
  45. print(A[i].day, A[i].month, A[i].year, "номер - ", i + 1)
  46. found = True
  47. if not found:
  48. print("Не найдено")
  49. if find == '2':
  50. print("Введите день для поиска")
  51. month = int(input())
  52. found = False
  53. for i in range(n):
  54. if month == A[i].month:
  55. print(A[i].day, A[i].month, A[i].year, "номер - ", i + 1)
  56. found = True
  57. if not found:
  58. print("Не найдено")
  59. if find == '3':
  60. print("Введите день для поиска")
  61. year = int(input())
  62. found = False
  63. for i in range(n):
  64. if year == A[i].year:
  65. print(A[i].day, A[i].month, A[i].year, "номер - ", i + 1)
  66. found = True
  67. if not found:
  68. print("Не найдено")
  69. if search == 2:
  70. print("Поиск по 1 - день, 2 - месяц, 3 - год")
  71. answer = int(input())
  72. if answer == 1:
  73. print("Введите день")
  74. day = int(input())
  75. count = 0
  76. start = 0
  77. middle = len(A) // 2
  78. end = len(A) - 1
  79. while start <= end and A[middle].day != day:
  80. count += 1
  81. if A[middle].day < day:
  82. start = middle + 1
  83. else:
  84. end = middle - 1
  85. middle = (end + start) // 2
  86. if start >= end:
  87. print(A[middle].day, A[middle].month, A[middle].year, "выполненно операций - ", count)
  88. else:
  89. print("Ошибка!")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement