91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Go語言二分之查找

發布時間:2020-08-02 17:10:07 來源:網絡 閱讀:275 作者:GoDevops 欄目:編程語言

二分查找也稱折半查找(Binary Search),它是一種效率較高的查找方法。但是,折半查找要求線性表必須采用順序存儲結構,而且表中元素按關鍵字有序排列

查找過程:

首先,假設表中元素是按升序排列,將表中間位置記錄的關鍵字與查找關鍵字比較,如果兩者相等,則查找成功;否則利用中間位置記錄將表分成前、后兩個子表,如果中間位置記錄的關鍵字大于查找關鍵字,則進一步查找前一子表,否則進一步查找后一子表。重復以上過程,直到找到滿足條件的記錄,使查找成功,或直到子表不存在為止,此時查找不成功。

算法要求:

1.必須采用順序存儲結構。

2.必須按關鍵字大小有序排列。

要求:




請對一個有序數組進行二分查找 {1,8, 10, 89, 1000, 1234} ,輸入一個數看看該數組是否存 在此數,并且求出下標,如果沒有就 示"沒有這個數"。【會使用到遞歸】






Go語言二分之查找





/二分查找的函數
/*
二分查找的思路: 比如我們要查找的數是 findVal
1. arr
是一個有序數組,并且是從小到大排序
2. 先找到 中間的下標 middle = (leftIndex + rightIndex) / 2, 然后讓 中間下標的值和 findVal 進行


比較




  1. 2.1  如果 arr[middle] > findVal , 就應該向 leftIndex ---- (middle - 1)




  2. 2.2  如果 arr[middle] < findVal , 就應該向 middel+1---- rightIndex




  3. 2.3  如果 arr[middle] == findVal , 就找到




  4. 2.4  上面的 2.1 2.2 2.3 的邏輯會遞歸執行




3. 想一下,怎么樣的情況下,就說明找不到[分析出退出遞歸的條件!!] if leftIndex > rightIndex {


// 找不到..


return .. }


*/







package main

import "fmt"

func BinarySearch(arr *[6]int,leftIndex int,rightIndex int ,findVal int ){
   if  leftIndex > rightIndex{
      fmt.Printf("%v中找不到\t元素%v\n",(*arr),findVal)
      return
   }

   //先找到中間下標
   midddle := (leftIndex+rightIndex)/2
   if   (*arr)[midddle] >findVal {
      //說明要查找的數在左邊  就應該向 leftIndex ---- (middle - 1)再次查找
      BinarySearch(arr,leftIndex,midddle-1,findVal)
   }else if  (*arr)[midddle] < findVal{
      //如果 arr[middle] < findVal , 就應該向 middel+1---- rightIndex
      BinarySearch(arr,midddle+1,rightIndex,findVal)
   }else {
      //找到了
      fmt.Printf("%v中找到元素%v,下標為%v\n",(*arr),findVal,midddle)
   }


}


func main() {
     ArraryNum := [6]int{1,8, 10, 89, 1000, 1234}
     ArraryNum2 := [6]int{8,200, 300, 889, 1000, 1234}
   BinarySearch(&ArraryNum,0,len(ArraryNum),1234)
   BinarySearch(&ArraryNum2,0,len(ArraryNum),300)
   BinarySearch(&ArraryNum,0,len(ArraryNum),-8)
   BinarySearch(&ArraryNum2,0,len(ArraryNum),30)
}

//結果

Go語言二分之查找

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长汀县| 沙田区| 台州市| 乌兰察布市| 黔西县| 江门市| 介休市| 西畴县| 嘉禾县| 外汇| 阳东县| 长宁区| 津南区| 洛隆县| 信宜市| 新宾| 屏山县| 本溪市| 贵阳市| 太仆寺旗| 永仁县| 杂多县| 深州市| 凌源市| 新干县| 邓州市| 罗源县| 荆州市| 清流县| 高平市| 古交市| 秀山| 安国市| 太白县| 丹江口市| 上思县| 五原县| 永胜县| 云梦县| 正镶白旗| 咸宁市|