美文网首页
go的二分法查找

go的二分法查找

作者: 魔法时刻 | 来源:发表于2019-07-28 21:33 被阅读0次

这篇文真虽然是写的二分法,但是二分法依赖有序的数据,所以在使用查找之前先用了一个冒泡排序

package main

import (
    "fmt"
)

// 冒泡排序的函数主体开始
func bubble(arr []float32) {
    times := len(arr)
    for i := 1; i < len(arr); i++ {
        for i := 1; i < times; i++ {
            if arr[i-1] > arr[i] {
                var temp float32
                temp = arr[i-1]
                arr[i-1] = arr[i]
                arr[i] = temp
            }
        }
        times--
    }
}

// 冒泡排序的函数主体结束


// 二分法查找
func dichoto(findarr []float32, findVal float32) string {
    times := 0
    rr := len(findarr)
    Val := 0
    leftIndex := 0
    rightIndex := rr - 1
    middle := (leftIndex + rightIndex) / 2

    for {
        middle = (leftIndex + rightIndex) / 2
        times++
        if leftIndex > rightIndex {
            break
        } else if findarr[middle] > findVal {
            rightIndex = middle - 1
            continue
        } else if findarr[middle] < findVal {
            leftIndex = middle + 1
            continue
        } else {
            Val = middle
            break
        }
    }

    if leftIndex > rightIndex {
        res := fmt.Sprintf("数组没有这个数")
        return res
    }
    res := fmt.Sprintf("找到了下标是%v,用了%v次", Val, times)
    return res

}

func main() {
    // 设置一个切片进行测试
    arr1 := []float32{24, 69, 80, 57, 13}
    bubble(arr1)
    fmt.Println(arr1)

    // 给切片添加新的数字,进一步测试
    arr2 := append(arr1, 45, 97, 86)
    bubble(arr2)
    fmt.Println(arr2)

    var findVal float32
    fmt.Println("已排序完毕,请输入你想超找的数字")
    fmt.Scanln(&findVal)

    res := dichoto(arr2, findVal)
    fmt.Println(res)

}

相关文章

  • 二分法查找

    二分法基本查找 二分法遍历查找

  • 二分法查找

    二分法查找的前提是数组必须排序!!!二分法查找的前提是数组必须排序!!!二分法查找的前提是数组必须排序!!!二分法...

  • 刷前端面经笔记(九)

    1.JavaScript实现二分法查找? 二分法查找,也称折半查找,是一种在有序数组中查找特定元素的搜索算法。查找...

  • 二分查找

    以二分法来提升查找效率 二分法查找到key的合适位置 put get delete 二分查找的查找操作为O(log...

  • 数据结构-递归

    二分法查找

  • 查找算法

    三种查找算法:顺序查找,二分法查找(折半查找),分块查找,散列表

  • 查找算法

    查找算法 顺序查找法 时间复杂度:O(n) 二分法查找 二分法查找适用于有顺序的序列 时间复杂度:O(n) 核心思...

  • 算法和排序

    1、线性查找 2、二分法查找 3、冒泡排序

  • 算法图解1-2/11

    原书作者 Aditya Bhargava 1 算法简介 1.1 二分法查找 二分法查找,正是猜数字游戏的玩法:A...

  • 前端面试之算法二分法

    使用二分法的前提是,目标数组的元素必须是有序排列的,所以二分法属于有序查找算法 二分法又称为“折半查找”,从数组的...

网友评论

      本文标题:go的二分法查找

      本文链接:https://www.haomeiwen.com/subject/hccmrctx.html