对未排序的数组进行排序和二进制搜索 n 次或线性搜索未排序的数组 n 次更好?
What is better sorting an unsorted array and binary searching n times or linear searching unsorted array n times?
我想搜索一个未排序的数组,搜索 n 次以找到一组特定的值,这些值小于数组元素以外的给定数字。那么排序然后进行 n 次二分搜索还是在未排序的数组中进行线性搜索更好
如果 n 较小,则在无序数组中搜索具有性能优势:
n = 小
Sorting: Zero time (0)
Searching: Linear time (n)
Sum: Linear time (n)
n = 大
Sorting: Zero time (0)
Searching: Quadratic time (n²)
Sum: Quadratic time (n²)
如果 n 较大,最好先对数组进行排序,然后进行二分查找:
n = 小
Sorting: Linearithmic time (n log n)
Searching: Logarithmic time (log n)
Sum: Linearithmic time (n log n)
n = 大
Sorting: Linearitmnic time (n log n)
Searching: Linearithmic time (n log n)
Sum: Linearithmic time (n log n)
我不能告诉你临界点在哪里,但你可以做一些实验。 ;)
我想搜索一个未排序的数组,搜索 n 次以找到一组特定的值,这些值小于数组元素以外的给定数字。那么排序然后进行 n 次二分搜索还是在未排序的数组中进行线性搜索更好
如果 n 较小,则在无序数组中搜索具有性能优势:
n = 小
Sorting: Zero time (0)
Searching: Linear time (n)
Sum: Linear time (n)
n = 大
Sorting: Zero time (0)
Searching: Quadratic time (n²)
Sum: Quadratic time (n²)
如果 n 较大,最好先对数组进行排序,然后进行二分查找:
n = 小
Sorting: Linearithmic time (n log n)
Searching: Logarithmic time (log n)
Sum: Linearithmic time (n log n)
n = 大
Sorting: Linearitmnic time (n log n)
Searching: Linearithmic time (n log n)
Sum: Linearithmic time (n log n)
我不能告诉你临界点在哪里,但你可以做一些实验。 ;)