程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

python3中实现查找数组中最接近与某值的元素

发布于2019-08-17 21:45     阅读(1054)     评论(0)     点赞(5)     收藏(0)


  1. import datetime
  2. def find_close(arr, e):
  3. start_time = datetime.datetime.now()
  4. size = len(arr)
  5. idx = 0
  6. val = abs(e - arr[idx])
  7. for i in range(1, size):
  8. val1 = abs(e - arr[i])
  9. if val1 < val:
  10. idx = i
  11. val = val1
  12. use_time = datetime.datetime.now() - start_time
  13. return arr[idx], use_time.seconds * 1000 + use_time.microseconds / 1000
  14. def find_close_fast(arr, e):
  15. start_time = datetime.datetime.now()
  16. low = 0
  17. high = len(arr) - 1
  18. idx = -1
  19. while low <= high:
  20. mid = int((low + high) / 2)
  21. if e == arr[mid] or mid == low:
  22. idx = mid
  23. break
  24. elif e > arr[mid]:
  25. low = mid
  26. elif e < arr[mid]:
  27. high = mid
  28. if idx + 1 < len(arr) and abs(e - arr[idx]) > abs(e - arr[idx + 1]):
  29. idx += 1
  30. use_time = datetime.datetime.now() - start_time
  31. return arr[idx], use_time.seconds * 1000 + use_time.microseconds / 1000
  32. if __name__ == "__main__":
  33. arr = []
  34. f = open("1Mints.txt")
  35. for line in f:
  36. arr.append(int(line))
  37. f.close()
  38. arr.sort()
  39. while 1:
  40. e = int(input("input a number:"))
  41. print("find_close ", find_close(arr, e))
  42. print ("find_close_fast ", find_close_fast(arr, e))

 



所属网站分类: 技术文章 > 博客

作者:搞笑

链接:https://www.pythonheidong.com/blog/article/48513/98b68c8071ea6914d863/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

5 0
收藏该文
已收藏

评论内容:(最多支持255个字符)