c語言二分法查找數(shù)組元素 數(shù)組排序的最少時間復(fù)雜度O(nlog2n)怎么計算的?
數(shù)組排序的最少時間復(fù)雜度O(nlog2n)怎么計算的?二分法的基本思想如下:假設(shè)數(shù)據(jù)按升序排序。對于給定的值x,從序列的中間位置開始。如果當(dāng)前位置值等于x,則搜索成功;如果x小于當(dāng)前位置值,則搜索在序
數(shù)組排序的最少時間復(fù)雜度O(nlog2n)怎么計算的?
二分法的基本思想如下:假設(shè)數(shù)據(jù)按升序排序。對于給定的值x,從序列的中間位置開始。如果當(dāng)前位置值等于x,則搜索成功;如果x小于當(dāng)前位置值,則搜索在序列的前半部分;如果x大于當(dāng)前位置值,則搜索在序列的后半部分繼續(xù),直到找到為止。因為數(shù)組是預(yù)先排序的,所以我們可以使用半查詢的方法,每次都丟棄一半要查詢的部分。這樣,長度為n的數(shù)組只需要log2n查詢,2是對數(shù)的基。例如,長度為7的數(shù)組最多只能找到三次。O(log2n)只表示它與log2n的數(shù)量級相同,因為存在舍入問題,也有可能是在查詢過程中發(fā)現(xiàn)的(即半個查詢點正好是要查詢的數(shù)據(jù)),所以O(shè)(log2n)是一個上限