Golang comprehensive interview questions - a program covering the random number, bubble sort, binary search three knowledge points

Randomly generated between integers 1 ~ 100 n, using the bubble ascending sort, using binary search whether there is a display 90 and marked, if not indicated no.

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)
}
Published 49 original articles · won praise 18 · views 4009

Guess you like

Origin blog.csdn.net/weixin_41047549/article/details/89891774