<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## **排序** **BubbleSort(冒泡排序)** ``` func BubbleSort(a []int) { for i := 0; i < len(a); i++ { for j := len(a) - 1; j >= i + 1; j-- { if a[j] < a[j - 1] { a[j], a[j - 1] = a[j - 1], a[j] } } } } ``` ## **查找** **順序查找** **二分查找** 二分查找的核心思想理解起來非常簡單,有點類似分治思想。即每次都通過跟區間中的中間元素對比,將待查找的區間縮小為一半,直到找到要查找的元素,或者區間被縮小為 0。但是二分查找的代碼實現比較容易寫錯。你需要著重掌握它的三個容易出錯的地方:循環退出條件、mid 的取值,low 和 high 的更新。 二分查找雖然性能比較優秀,但應用場景也比較有限。底層必須依賴數組,并且還要求數據是有序的。對于較小規模的數據查找,我們直接使用順序遍歷就可以了,二分查找的優勢并不明顯。二分查找更適合處理靜態數據,也就是沒有頻繁的數據插入、刪除操作。 這里用golang實現一次 ,代碼包括四個部分: 1)非遞歸實現二分查找 2)遞歸實現二分查找 3)查找第一個等于給定值的元素 4)查找最后一個值等于給定值的元素 5)查找第一個大于等于給定值的元素 6)查找最后一個小于等于給定值的元素 ``` package main //非遞歸實現 func BinarySearch(a []int, v int) int { n := len(a) if n == 0 { return -1 } low := 0 high := n - 1 for low <= high { mid := (low + high) / 2 if a[mid] == v { return mid } else if a[mid] > v { high = mid - 1 } else { low = mid + 1 } } return -1 } //遞歸實現 func BinaryFind(arr *[]int, leftIndex int , rightIndex int, findVal int) { //判斷leftIndex是否大于rightIndex if leftIndex > rightIndex { fmt.Println("沒找到") return } //先找到中間的下標 middle := (leftIndex + rightIndex) / 2 if (*arr)[middle] > findVal { BinaryFind(arr, leftIndex, middle - 1, findVal) } else if (*arr)[middle] < findVal { BinaryFind(arr, middle + 1, rightIndex, findVal) } else { fmt.Printf("找到了,下標是%v\n", middle) } } func main() { //定義一個數組 arr := [18]int{1, 2, 5, 7, 15, 25, 30, 36, 39, 51, 67, 78, 80, 82, 85, 91, 92, 97} BinaryFind(&arr, 0, len(arr) - 1, 30) } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看