golang数组 排序和查找

            

 

package main

import "fmt"

func BubbleSort(arr *[5]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))
}


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

		BubbleSort(&arr)

		fmt.Println(arr)
}

  

排序前arr= [24 69 80 57 13]
排序后arr= [13 24 57 69 80]
[13 24 57 69 80]

  

     

//代码
package main
import (
    "fmt"
)

//二分查找函数 //假设有序数组的顺序是从小到大(很关键,决定左右方向)
func BinaryFind(arr *[]int, leftIndex int , rightIndex int, findVal int) {
    //判断leftIndex是否大于rightIndex
    if leftIndex > rightIndex {
        fmt.Println("没找到")
        return
    }

    //先找到中间的下标
    middle := (leftIndex + rightIndex) / 2
    fmt.Println(middle)

    if (*arr)[middle] > findVal {
        fmt.Println(leftIndex)
        fmt.Println(middle - 1)
        BinaryFind(arr, leftIndex, middle - 1, findVal)
    } else if (*arr)[middle] < findVal {
        BinaryFind(arr, middle + 1, rightIndex, findVal)
    } else {
        fmt.Printf("找到了,下标是%v
", middle)
    }
}


func main() {
    //定义一个数组
    arr := []int{1, 2, 5, 7, 15, 25, 30, 36, 39, 51}
    BinaryFind(&arr, 0, len(arr) - 1, 30)
}

 

  

原文地址:https://www.cnblogs.com/sunlong88/p/11142597.html