Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 二元搜索与三元搜索_Algorithm_Search_Binary Search_Ternary Search - Fatal编程技术网

Algorithm 二元搜索与三元搜索

Algorithm 二元搜索与三元搜索,algorithm,search,binary-search,ternary-search,Algorithm,Search,Binary Search,Ternary Search,就时间和空间的复杂性而言,二元搜索比三元搜索好吗?二元搜索都有恒定的空间,但三元搜索的大O时间是Log_3n,而不是二元搜索的Log_2n,因为Log_b(N)=Log_x(N)/Log_x(b) 实际上,不使用三元搜索,因为您必须在每个步骤进行额外的比较,这通常会导致更多的总体比较。2*对数3(N)比较与对数2(N)比较。这可能取决于数据。如果比较的小于、等于和大于的数字大致相等,则将数据按三种方式拆分意味着对数的基数为3而不是2,这会更好。但实际上,三方比较比双向比较更昂贵,因此在一般情况下

就时间和空间的复杂性而言,二元搜索比三元搜索好吗?

二元搜索都有恒定的空间,但三元搜索的大O时间是Log_3n,而不是二元搜索的Log_2n,因为Log_b(N)=Log_x(N)/Log_x(b)


实际上,不使用三元搜索,因为您必须在每个步骤进行额外的比较,这通常会导致更多的总体比较。2*对数3(N)比较与对数2(N)比较。

这可能取决于数据。如果比较的小于、等于和大于的数字大致相等,则将数据按三种方式拆分意味着对数的基数为3而不是2,这会更好。但实际上,三方比较比双向比较更昂贵,因此在一般情况下,三方比较的额外成本可能不值得。

这可能的重复实际上取决于您尝试做什么,您尝试做什么?但是O(log_2 n)=O(log_3 n).@NicoSchertler-它们都有相同的大Oh复杂度日志(N),但因为三元搜索需要更多的比较,所以没有使用。在现实世界中,二进制搜索不那么复杂。