算法(冒泡/快速查询/二分查找)
冒泡
func BubbleSort(arr *[5]int) {
//定义一个临时变量
temp := 0
//最外层循环轮数
for j := 0; j < len(*arr)-1; j++ {
//循环每一轮排序
for i := 0; i < len(*arr)-1-j; i++ {
if (*arr)[i] < (*arr)[i+1] {
temp = (*arr)[i]
(*arr)[i] = (*arr)[i+1]
(*arr)[i+1] = temp
}
}
}
}
快速查询
func queryFind(arr *[5]int, searchValue int) {
indexValue := -1
for i := 0; i < len(*arr); i++ {
if searchValue == (*arr)[i] {
indexValue = i
break
}
}
if indexValue != -1 {
fmt.Printf("找到了数组的值%d,下标是%d", searchValue, indexValue)
} else {
fmt.Printf("没有找到")
}
}
二分查找
func BinaryFind(arr *[5]int, leftIndex int, rightIndex int, searchValue int) {
if leftIndex > rightIndex {
fmt.Println("找不到")
return
}
//中间索引
middleIndex := (leftIndex + rightIndex) / 2
if (*arr)[middleIndex] > searchValue { // searchValue 在 一半左
BinaryFind(arr, leftIndex, middleIndex-1, searchValue)
} else if (*arr)[middleIndex] < searchValue { //searchValue 在 一半右
BinaryFind(arr, middleIndex+1, rightIndex, searchValue)
} else if (*arr)[middleIndex] == searchValue { //刚刚好大于
fmt.Println(middleIndex)
}
}
本作品采用《CC 协议》,转载必须注明作者和本文链接