golang sort包

1.sort.Search(n, func(k int) bool)

描述:search使用二分法進行查找,Search()方法回使用“二分查找”算法來搜索某指定切片[0:n],并返回能夠使f(i)=true的最小的i(0<=i<n)值,并且會假定,如果f(i)=true,則f(i+1)=true,即對于切片[0:n],i之前的切片元素會使f()函數(shù)返回false,i及i之后的元素會使f()函數(shù)返回true。但是,當在切片中無法找到時f(i)=true的i時(此時切片元素都不能使f()函數(shù)返回true),Search()方法會返回n(而不是返回-1)
源碼如下:

func Search(n int, f func(int) bool) int {
    // Define f(-1) == false and f(n) == true.
    // Invariant: f(i-1) == false, f(j) == true.
    i, j := 0, n
    for i < j {
        h := int(uint(i+j) >> 1) // avoid overflow when computing h
        // i ≤ h < j
        if !f(h) {
            i = h + 1 // preserves f(i-1) == false
        } else {
            j = h // preserves f(j) == true
        }
    }
    // i == j, f(i-1) == false, and f(j) (= f(i)) == true  =>  answer is i.
    return i
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 一、sort包的內(nèi)容,以及使用sort包提供了排序切片和用戶自定義數(shù)據(jù)集以及相關功能的函數(shù)。 sort包主要針對[...
    ljh123閱讀 5,254評論 0 4
  • // 滿足 Interface 接口的類型可以被本包的函數(shù)進行排序。type Interface interfac...
    佛心看世界閱讀 331評論 0 0
  • sort sort包提供了排序切片和用戶自定義數(shù)據(jù)集的函數(shù)。 type Interface 一個滿足sort.In...
    DevilRoshan閱讀 1,441評論 0 0
  • 第一部分 初識Python語言 第1章 程序設計基本方法 1.1 計算機的概念 計算機是根據(jù)指令操作數(shù)據(jù)的設備,具...
    不脫發(fā)的程序員閱讀 1,218評論 0 1
  • sort.Interface 接口 這個接口是 sort 包的核心,它有3個方法。這是 Golang 很酷的一個特...
    岳陽小羅閱讀 2,910評論 0 5

友情鏈接更多精彩內(nèi)容