0
点赞
收藏
分享

微信扫一扫

算法(待更新)

十日十月Freddie 2022-04-02 阅读 72
golang
package main

import (
	"fmt"
	_ "fmt"
	"strconv"
	"time"
)

func fib(N int) int {
	//if N == 1 || N == 2 {
	//	return 1
	//}
	//return fib(N-1) + fib(N-2)
	arr := []int{0, 1, 1}
	for i := 3; i <= N; i++ {
		arr = append(arr, arr[i-1]+arr[i-2])
	}
	return arr[N]

}
func binarysearch(nums []int, target int) int {
	left := 0
	fmt.Println(nums)
	right := len(nums) - 1
	for {
		// 退出循环
		if left > right {
			break
		}
		//
		mid := left + (right-left)/2
		if nums[mid] == target {
			return mid
			//中间值小于目标值,左边界向右移动
		} else if nums[mid] < target {
			left = mid + 1
			//中间值大于目标值 右边界向左移动
		} else if nums[mid] > target {
			right = mid - 1
		}
	}
	return -1
}
func main() {
	fmt.Printf("begin:%d\n", time.Now().Second())
	fib_number := fib(50)
	fmt.Printf("end:%d\n", time.Now().Second())
	fmt.Printf("result:%s\n", strconv.Itoa(fib_number))
	nums := []int{1, 2, 4, 3, 5, 6}
	index := binarysearch(nums, 5)
	fmt.Printf("binary:%s", strconv.Itoa(index))
}

举报

相关推荐

0 条评论