用go写出2.生成一个长度为10的随机整数数组并进行升序排序 插入一个数值20,然后打印要求仍然是升序 4.使用二分查找法查找20,并输出位置
时间: 2024-09-29 09:02:39 浏览: 31
在Go语言中,你可以按照以下步骤来完成这些任务:
1. 生成一个长度为10的随机整数数组并升序排列:
```go
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano())
arr := make([]int, 10)
for i := range arr {
arr[i] = rand.Intn(100) // 生成0到99的随机数
}
sort.Ints(arr) // 使用sort包进行升序排序
fmt.Println("原始数组:", arr)
}
// 注意这里需要导入`sort`包并实现`Ints`函数来进行排序
```
2. 插入数值20,保持数组升序:
```go
arr[0], arr[len(arr)-1] = arr[len(arr)-1], 20 // 将最后一个元素与20交换,保证数组依然有序
fmt.Println("插入20后的数组:", arr)
```
3. 使用二分查找法查找20的位置:
```go
func binarySearch(arr []int, target int) int {
left, right := 0, len(arr) - 1
for left <= right {
mid := (left + right) / 2
if arr[mid] == target {
return mid
} else if arr[mid] < target {
left = mid + 1
} else {
right = mid - 1
}
}
return -1 // 如果没找到,返回-1表示不存在
}
position := binarySearch(arr, 20)
if position != -1 {
fmt.Printf("20在数组中的位置: %d\n", position)
} else {
fmt.Println("20不在数组中")
}
```
现在,你可以将上述代码整合在一起运行,看看结果。
阅读全文