Guest User

Untitled

a guest
May 24th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.03 KB | None | 0 0
  1. import time, random
  2. from datetime import datetime
  3.  
  4.  
  5. # data = [2, 4, 33, 44, 55, 66, 77, 88, 99, 100]
  6. # data1 = list(range(100000))
  7. def random_list(n):
  8. result = []
  9. ids = list(range(1001, 1001+n))
  10. a1 = ['李', '郑', '刘', '林', '王', ]
  11. a2 = ['爱', '光', '习', '龙', ]
  12. a3 = ['娟', '丽', '刚', '龙', ]
  13. for i in range(n):
  14. age = random.randint(18,60)
  15. id = ids[i]
  16. name = random.choice(a1)+random.choice(a2)+\
  17. random.choice(a3)
  18. dict_ran = {'id':id, 'name':name, 'age':age}
  19. result.append(dict_ran)
  20. return result
  21.  
  22.  
  23. data = random_list(50)
  24.  
  25.  
  26. def call_time(func):
  27. def wrapper(*args, **kwargs):
  28. t1 = datetime.now()
  29. x = func(*args, **kwargs)
  30. t2 = datetime.now()
  31. print("Time cost:", func.__name__, t2-t1)
  32. return x
  33. return wrapper
  34.  
  35.  
  36. @call_time
  37. def linear_search(data_set, value):
  38. for i in range(len(data_set)):
  39. if data_set[i] == value:
  40. return print(i)
  41.  
  42.  
  43. linear_search(data, 234232)
  44.  
  45.  
  46. @call_time
  47. def bin_search(data_set, value):
  48. '''
  49.  
  50. :param data_set: 所查找的数组
  51. :param value: 所查找的值
  52. :return: 所查找值的下标
  53. '''
  54. low = 0
  55. high = len(data_set) - 1 # 下标只到len-1
  56. while low <= high: # 常规判断
  57. mid = (low+high)//2
  58. if data_set[mid] == value:
  59. return print(mid)
  60. elif data_set[mid] > value:
  61. high = mid - 1
  62. else:
  63. low = mid + 1
  64. return print(False)
  65.  
  66. bin_search(data, 1035)
  67.  
  68.  
  69. def bin_search(data_set, value):
  70. '''
  71.  
  72. :param data_set: 所查找的数组
  73. :param value: 所查找的值
  74. :return: 所查找值的下标
  75. '''
  76. low = 0
  77. high = len(data_set) - 1 # 下标只到len-1
  78. while low <= high: # 常规判断
  79. mid = (low+high)//2
  80. if data_set[mid].get('id') == value:
  81. return print(data_set[mid])
  82. elif data_set[mid].get('id') > value:
  83. high = mid - 1
  84. else:
  85. low = mid + 1
  86. return print(False)
  87.  
  88. bin_search(data, 1035)
Add Comment
Please, Sign In to add comment