Golang completa preguntas de la entrevista - un programa que cubre el número aleatorio, ordenamiento de burbuja, binarios de búsqueda tres puntos de conocimiento

Aleatoriamente generado entre números enteros de 1 ~ 100 n, mediante el ordenamiento de burbuja ascendente, mediante la búsqueda binaria si hay una pantalla 90 y marcada, si no se indica ninguna.

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)
}
Publicado 49 artículos originales · alabanza ganado 18 · vistas 4009

Supongo que te gusta

Origin blog.csdn.net/weixin_41047549/article/details/89891774
Recomendado
Clasificación