go-排序和查找

1.冒泡排序

func main() {
    arr := [6]int{32,4,5,23,12,1}
    BubbleSort(&arr)
    fmt.Println("main arr=", arr)
}
func BubbleSort(arr *[6]int)  {
    fmt.Println("排序前arr=", (*arr))
    temp := 0
    for i := 0; i < len(*arr)-1; i++ {
        for j := 0; j < len(*arr) - 1 - i; j++ {
            if (*arr)[j] > (*arr)[j+1] {
                temp = (*arr)[j]
                (*arr)[j] = (*arr)[j+1]
                (*arr)[j+1] = temp
            }
        }
    }
    fmt.Println("排序后arr=", (*arr))
}

2.二分法排序

func main() {
    arr := [6]int{1,2,5,9,89,100}
    BinaryFind(&arr, 0, len(arr)-1, 9)
    fmt.Println("main arr=", arr)
}
func BinaryFind(arr *[6]int, leftIndex int, rightIndex int, findVal int) {
    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", middle)
    }
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!