Tôi đã làm một thử nghiệm trong đó tôi đã cố gắng tìm thời gian cần để tìm kiếm một danh sách python. Tôi có một danh sách arr
với số nguyên ngẫu nhiên. arr_s
có cùng các yếu tố chỉ được sắp xếp.Tại sao tìm kiếm trong danh sách được sắp xếp trong python mất nhiều thời gian hơn?
arr = np.random.randint(low = 0, high = 1000, size = 500)
arr_s = sorted(arr)
Bây giờ tôi có thể tạo một mảng ngẫu nhiên của số nguyên find
trong đó có yếu tố mà tôi muốn tìm kiếm trong arr
và arr_s
.
>>> %%timeit
...:find = np.random.randint(0, 1000, 600)
...:for i in find:
...: if i in arr:
...: continue
[OUT]:100 loops, best of 3: 2.18 ms per loop
>>> %%timeit
...:find = np.random.randint(0, 1000, 600)
...:for i in find:
...: if i in arr_s:
...: continue
[OUT]:100 loops, best of 3: 5.15 ms per loop
Bây giờ tôi hiểu rằng tôi đã không sử dụng bất kỳ phương pháp cụ thể để tìm kiếm trong mảng được sắp xếp (tìm kiếm ví dụ nhị phân). Vì vậy, nó có thể được thực hiện tìm kiếm tuyến tính tiêu chuẩn nhưng tại sao nó mất nhiều thời gian hơn để tìm kiếm trong mảng được sắp xếp trong mảng unsorted? Tôi nghĩ rằng nó sẽ mất gần như cùng một lúc. Tôi đã thử tất cả các loại mảng find
. Các mảng có các số nguyên từ (0, 1000), (-1000, -100) và (-10000, 10000) các vòng lặp luôn mất nhiều thời gian hơn cho mảng được sắp xếp.
bạn có thể tìm thấy một số câu trả lời một phần trong http://stackoverflow.com/questions/12905513/python-in-keyword-efficiency –