Golang实现经典算法

Golang实现经典算法

1、快速排序

func QuickSort(nums []int,left,right int){
	val := nums[(left+right)/2]
	i,j := left,right
	for nums[j] > val {
		j--
	}
	for nums[i] < val {
		i++
	}
	nums[i],nums[j] = nums[j],nums[i]
	i++
	j--
	if i < right {
		QuickSort(nums,i,right)
	}
	if j > left {
		QuickSort(nums,left,j)
	}
}

2、冒泡排序

func BubbleSort(nums []int){
	length := len(nums)
	for i:=1;i<length;i++{
		for j:=0;j<length-1;j++{
			if nums[j]>nums[i] {
				nums[j],nums[i] = nums[i],nums[j]
			}
		}
	}
}

3、二分查找法
二分查找的基础是先做排序,然后做二分查找

func BinarySearch(nums []int,left,right,val int){
	k := (left+right)/2
	if nums[k]>val {
		return BinarySearch(nums,left,k,val)
	}else if nums[k] < val {
		return BinarySearch(nums,k,right,val)
	}else{ 
		return k
	}
}

4、斐波拉契数列

找出第n位数是什么
1、递归方法 时间复杂度是n方

func FibonacciRecursion(n int)int{
	if n==0 {
		return 0
	}else if n==1 {
		return 1
	}else{ 
		return FibonacciRecursion(n-1)+FibonacciRecursion(n-2)
 	}
}

2、迭代法
时间复杂度是线性的

func FibonacciFind(n int)int{
	x,y,fib := 0,1,0
	for i:=0;i<=n;i++{
		if i==0 {
			fib=0
		}else if i== 1{
			fib = x+y
		}else{
			fib=x+y
			x,y = y,fib	
		}
	}
	return fib
}
    原文作者:gotaotao
    原文地址: https://blog.csdn.net/gotaotao/article/details/82813358
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞