七叶笔记 » golang编程 » golang实现冒泡排序,插入排序,顺序查找,二分查找

golang实现冒泡排序,插入排序,顺序查找,二分查找

冒泡排序

 
package main
import "fmt"

//冒泡排序

func BubbleSort(arr *[5]int) {
    fmt.Println("before sort: ", (*arr))
    temp := 0
    //i表示比较趟数,比较一趟确定一个数的最终位置
    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("after sort: ", (*arr))
}

func main() {
    arr := [5]int{24, 69, 80, 57, 13}
    BubbleSort(&arr)
}  

顺序查找

 
package main
import "fmt"

func main() {
    names := [4]string{"A", "B", "C", "D"}
    var name = ""
    fmt.Scanln(&name)
    var index = -1
    for i := 0; i < len(names); i++ {
        if name == names[i] {
            index = i
            break
        }
    }

    if index == -1 {
        fmt.Println("can not find")
    } else {
        fmt.Printf("find index: ", index)
    }
}  

二分查找

 
package main
import "fmt"

func BinarySearch(arr *[6]int, left int, right int, find int) {
    if left > right {
        fmt.Println("can not find.")
        return
    }

    middle := (left + right) / 2

    if (*arr)[middle] > find {
        BinarySearch(arr, left, middle-1, find)
    } else if (*arr)[middle] < find {
        BinarySearch(arr, middle+1, right, find)
    } else {
        fmt.Println("finded, index is: ", middle)
    }
}

func main() {
    arr := [6]int{1, 6, 777, 987}
    BinarySearch(&arr, 0, len(arr), 777)
}  

插入排序

 
package main
import "fmt"

func InsertSort(arr *[5]int) {
    for i := 1; i < len(arr); i++ {
        insertValue := arr[i]
        insertIndex := i - 1

        for insertIndex >= 0 && insertValue > arr[insertIndex] {
            arr[insertIndex+1] = arr[insertIndex]
            insertIndex--
        }

        if insertIndex+1 != i {
            arr[insertIndex+1] = insertValue
        }

        fmt.Printf("---%d----%v\n", i, *arr)
    }
}

func main() {
    arr := [5]int{23, 0, 12, 56, 34}
    InsertSort(&arr)
}  

相关文章