Golang面试综合考题——一个程序涵盖随机数,冒泡排序,二分查找 三个知识点

1~100之间随机生成n个整数,使用冒泡由小到大排序,使用二分查找是否存在90并显示下标,如果没有提示找不到。

package main
import (
	"fmt"
	"math/rand"
	"time"
)
func arrayCreate(n int) []int {

	var arr = make([]int,n)
	rand.Seed(time.Now().UnixNano())
	for i := 0 ; i < len(arr) ; i++ {
		arr[i] = rand.Intn(100)
	}
	return arr
}

func bubbleSwap(array1 []int) []int {
	temp := 0
	for i := 0 ; i < len(array1) - 1 ; i++ {
		for j := 0 ; j < len(array1) - 1 -i ; j++ {
			if array1[j] > array1[j+1] {
				temp = array1[j]
				array1[j] = array1[j+1]
				array1[j+1] = temp
			}
		}
	}
	return array1
}

func twoWayFind(destArray []int,leftin int, rightin int,findVal int) {

	midin := (leftin + rightin) / 2
		if leftin > rightin {
			fmt.Println("查找的内容不存在")
			return
		}
		if (destArray)[midin] > findVal {
			twoWayFind(destArray,leftin,midin - 1,findVal)
		}
		if (destArray)[midin] < findVal {
			twoWayFind(destArray,midin + 1,rightin,findVal)
		}
		if (destArray)[midin] == findVal {
			fmt.Printf("找到了,下标为%d,查找值为%d",midin,findVal)
		}
}

func main() {
	/*
	1~100之间随机生成n个整数,使用冒泡由小到大排序,使用二分查找是否存在90并显示下标,如果没有提示找不到
	 */
	var n int
	fmt.Println("请输入随机数组元素个数:")
	fmt.Scanf("%d",&n)
	arr := arrayCreate(n)
	fmt.Println("随机生成的数组为:",arr)
	destArray := bubbleSwap(arr)
	fmt.Println("从小打到排序后的数组为: ",destArray)
	twoWayFind(destArray,0,n-1,90)
}
发布了49 篇原创文章 · 获赞 18 · 访问量 4009

猜你喜欢

转载自blog.csdn.net/weixin_41047549/article/details/89891774
今日推荐