一、题目要求
随机生成10个整数(1-100之间),使用冒泡排序法进行排序,然后使用二分查找法,查找是否有90这个数,并显示下标,如果没有则显示"找不到该数"
二、代码实现
这是升序冒泡排列,然后二分法查找指定值90
package main
import (
"fmt"
"math/rand"
"time"
)
//随机生成10个整数(1-100之间),使用冒泡排序法进行排序,然后使用二分查找法,查找是否有90这个数,并显示下标,如果没有则显示"找不到该数"
func randNum() (arr [10]int) {
rand.Seed(time.Now().UnixNano())
for j := 0; j < 10; j++ {
//将随机数赋值
arr[j] = rand.Intn(101)
//循环j-1次,判断arr[K]是否等于arr[j],如果等于,则重新取随机数给arr[j]
loop:
for k := 0; k < j; k++ {
if arr[k] == arr[j] {
arr[j] = rand.Intn(101)
goto loop
}
}
}
return
}
func bubleSort(arr *[10]int) {
for i := 0; i < 10; i++ {
flag := false
for j := 0; j < 10-i-1; j++ {
if arr[j] > arr[j+1] {
arr[j], arr[j+1] = arr[j+1], arr[j]
flag = true
}
}
if !flag {
break
}
}
return
}
func findNum(arr *[10]int, leftIndex, rightIndex, findVal int) {
if arr == nil {
return
}
if leftIndex > rightIndex {
fmt.Println("找不到")
return
}
middle := (leftIndex + rightIndex) / 2
if arr[middle] > findVal {
findNum(arr, leftIndex, middle-1, findVal)
} else if arr[middle] < findVal {
findNum(arr, middle+1, rightIndex, findVal)
} else {
fmt.Println("找到了,下标是:", middle)
}
}
func main() {
var arr = randNum()
fmt.Println(arr)
bubleSort(&arr)
fmt.Println(arr)
findNum(&arr, 0, 9, 90)
}
以下是降序冒泡排序,用二分法查找指定值90
package main
import (
"fmt"
"math/rand"
"time"
)
//随机生成10个随机数(1-100)
func randNum() (arr [10]int) {
rand.Seed(time.Now().UnixNano())
for j := 0; j < 10; j++ {
arr[j] = rand.Intn(101)
loop:
for k := 0; k < j; k++ {
if arr[k] == arr[j] {
arr[j] = rand.Intn(101)
goto loop
}
}
}
return
}
//冒泡降序排序
func bubleSortDown(arr *[10]int) {
for j := 0; j < len(arr); j++ {
flag := false
for k := 0; k < len(arr)-j-1; k++ {
if arr[k] < arr[k+1] {
arr[k], arr[k+1] = arr[k+1], arr[k]
flag = true
}
}
if !flag {
break
}
}
}
//使用二分找到90,如果有输出下标
func binarySearch(arr *[10]int, leftIndex, rightIndex, findVal int) {
if leftIndex > rightIndex {
fmt.Printf("找不到%v这个数。\n", findVal)
return
}
middle := (leftIndex + rightIndex) / 2
if arr[middle] > findVal {
binarySearch(arr, middle+1, rightIndex, findVal)
} else if arr[middle] < findVal {
binarySearch(arr, leftIndex, middle-1, findVal)
} else {
fmt.Println("找到了,下标是:", middle)
return
}
}
func main() {
var arr [10]int = randNum()
bubleSortDown(&arr)
binarySearch(&arr, 0, len(arr)-1, 90)
}
浙公网安备 33010602011771号