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\n", middle) } } func main() { //定義一個數組 arr := []int{1, 2, 5, 7, 15, 25, 30, 36, 39, 51} BinaryFind(&arr, 0, len(arr) - 1, 30) }