go语言编写算法
2023/6/15 1:23:34
本文主要是介绍go语言编写算法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1、冒泡排序
// 冒泡排序 a := []uint8{9, 20, 10, 23, 7, 22, 88, 102} for i := 0; i < len(a); i++ { for k := i + 1; k < (len(a) - i); k++ { if a[i] > a[k] { a[i], a[k] = a[k], a[i] } } } fmt.Println(a)
2、选择排序
// 选择排序 a := []int8{9, 20, -1, 10, -5, 23, 7, 22, 88, 102} for i := 0; i < len(a); i++ { var ( min_n int8 = a[i] min_i int = i ) for k := i + 1; k < len(a); k++ { if a[k] < min_n { min_n = a[k] min_i = k } } a[i], a[min_i] = a[min_i], a[i] } fmt.Println(a)
3、插入排序
a := []int8{9, 20, 22, -1, 10, -5, 23, 7, 7, 22, 88, 102} for i := 1; i < len(a); i++ { for k := i - 1; k >= 0; k-- { if a[k+1] < a[k] { a[k+1], a[k] = a[k], a[k+1] } } } fmt.Println(a)
4、随机数出现的概率为平方
正常来讲,对于[0-10)范围内的任意一个整除的随机数概率为0.1,如果我要实现其中任意一个整数的随机数为0.1^2呢?
下面的示例中,是计算随机数为0-4范围的平方,正常来讲,0-4范围是5个,所以出现的概率为1/2。求其平方,即0.25
// 随机数的概率为平方 var count float64 = 0 for i := 0; i < 100000; i++ { if rand.Intn(10) < 5 { if rand.Intn(10) < 5 { count++ } } } p := count / 100000 fmt.Println(p)
5、这是一个题目:
我当前有一个函数可以等概率随机返回[1-5]之间的任意一个数,在不使用内部函数的前提下,如何只根据当前的这个随机函数来等概率返回[1-7]中的任意一个数呢?
下面是这个随机函数:
func f1() int { rn := rand.Intn(5) + 1 return rn }
解题思路是这样的,可以先构造一个函数,等概率返回0和1,然后再构造一个函数,1-7中的数,可以用三个bit位来表示了,但是还有返回0的时候,当返回0的时候,扔掉,重新来随机
下面是等概率返回0和1的函数:
func f2() int { for { num_1 := f1() if num_1 < 3 { return 0 } else if num_1 == 3 { continue } else { return 1 } } }
下面是返回[1-7]的函数:
func f3() int { for { num_2 := (f2() << 2) + (f2() << 1) + f2() if num_2 == 0 { continue } else { return num_2 } } }
这篇关于go语言编写算法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-04-01got an unexpected keyword argument
- 2024-03-30维多利亚的秘密 golang入坑系统
- 2024-03-29mongodb sort by date
- 2024-03-29go swagger
- 2024-03-25mongodb cdc
- 2024-03-25how to use go in vscode
- 2024-03-22mongooseserverselectionerror: connect econnrefused ::1:27017
- 2024-03-21pymongo insert_many
- 2024-03-18projection mongodb
- 2024-03-14clickhouse-go