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
}
}
}

f2

下面是返回[1-7]的函数:

func f3() int {
for {
num_2 := (f2() << 2) + (f2() << 1) + f2()
if num_2 == 0 {
continue
} else {
return num_2
}
}
}

f3()

go语言编写算法的更多相关文章

  1. 正整数构成的线性表存放在单链表中,编写算法将表中的所有的奇数删除。(C语言)

    /* 正整数构成的线性表存放在单链表中,编写算法将表中的所有的奇数删除 */ #include <stdio.h> #include <stdlib.h> typedef st ...

  2. [改善Java代码]易变业务使用脚本语言编写

    建议16: 易变业务使用脚本语言编写 Java世界一直在遭受着异种语言的入侵,比如PHP.Ruby.Groovy.JavaScript等,这些“入侵者”都有一个共同特征:全是同一类语言—脚本语言,它们 ...

  3. Atiitt 使用java语言编写sql函数或存储过程

    Atiitt 使用java语言编写sql函数或存储过程 1.1. java编写sql函数或存储过程的机制1 1.2. Java编写sp的优点1 1.3. 支持java源码,class文件,blog f ...

  4. Fastjson是一个Java语言编写的高性能功能完善的JSON库。

    简介 Fastjson是一个Java语言编写的高性能功能完善的JSON库. 高性能 fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson. ...

  5. c/c++面试指导---c语言基础算法总结1

    c语言基础算法总结 1  初学者学习任何一门编程语言都必须要明确,重点是学习编程方法和编程思路,不是学习语法规则,语法规则是为编程实现提供服务和支持.所以只要认真的掌握了c语言编程方法,在学习其它的语 ...

  6. Python语言编写BP神经网络

    Python语言编写BP神经网络 2016年10月31日 16:42:44 ldy944758217 阅读数 3135   人工神经网络是一种经典的机器学习模型,随着深度学习的发展神经网络模型日益完善 ...

  7. [转载] 使用C/C++语言编写基于DSP程序的注意事项

    原文地址:『转』使用C/C++语言编写基于DSP程序的注意事项作者:skysmile   1.不影响执行速度的情况下,可以使用c或c/c++语言提供的函数库,也可以自己设计函数,这样更易于使用“裁缝师 ...

  8. 基于php基础语言编写的小程序之计算器

    基于php基础语言编写的小程序之计算器 需求:在输入框中输入数字进行加.减.乘.除运算(html+php) 思路: 1首先要创建输入数字和运算符的输入框,数字用input的text属性,运算符用sel ...

  9. 如何用C语言编写病毒‘

    怎样用C语言编写病毒在分析病毒机理的基础上,用C语言写了一个小病毒作为实例,用TURBOC2.0实现.[Abstract] This paper introduce the charateristic ...

  10. 选择使用c语言编写的phalcon框架

    使用这个框架,我总结了如下几点考虑 1.这个框架速度快.纯c语言编写的框架,速度都比php框架快,省去了中间环节.当然,使用它不仅仅是性能考虑.因为如果为了解决php性能问题,完全可以有很多种方式,不 ...

随机推荐

  1. 第一部分:介绍 Spdlog 日志库

    什么是 Spdlog 日志库 Spdlog 是一个 C++ 的日志库,它具有高效.易用.跨平台等特点.它可以写入到控制台.文件等输出目标,支持多种日志级别.多线程安全等功能,非常适合在 C++ 项目中 ...

  2. 案例: 利用 Hugging Face 进行复杂文本分类

    Witty 与 Hugging Face 专家加速计划的成功案例 如果你对如何更快构建 ML 解决方案感兴趣,请访问 专家加速计划 登陆页面并通过 填写表单 联系我们! 业务背景 随着 IT 技术不断 ...

  3. java-树形结构数据

    在我们实际开发中会接触到树形结构,根节点子节点, 然后添加数据构成了我们的树形结构, 在Java后台利用递归思路进行构建树形结构数据,返回给前端,能以下拉菜单等形式进行展示, 以某市行政区为例 后端需 ...

  4. python入门教程之十五获取对象属性的几种方法

    当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()判断: >>> ...

  5. 解密prompt系列5. APE+SELF=自动化指令集构建代码实现

    上一章我们介绍了不同的指令微调方案, 这一章我们介绍如何降低指令数据集的人工标注成本!这样每个人都可以构建自己的专属指令集, 哈哈当然我也在造数据集进行时~ 介绍两种方案SELF Instruct和A ...

  6. LeeCode 二叉树问题(四)

    二叉搜索树的应用问题 二叉搜索树的定义 若左子树不空,则左子树上所有节点的值均小于根节点的值 若右子树不空,则右子树上所有节点的值均大于根节点的值 它的左右子树也均为二叉搜索树 中序遍历结果为一个升序 ...

  7. 关于 OAuth 你又了解哪些?

    作者罗锦华,API7.ai 技术专家/技术工程师,开源项目 pgcat,lua-resty-ffi,lua-resty-inspect 的作者. OAuth 的背景 OAuth,O 是 Open,Au ...

  8. SRAM 测试总结

    SoC随着工艺进步设计复杂度增加,embeded sram也越来越多.在40nm SoC产品Sram一般在20Mbits左右,当工艺发展到28nm时Sram就增加到100Mbits.如果考虑AI产品, ...

  9. react中super()的理解

    首先 super() 是在 es6的class(类)的方法创建组件出现 下面是分别是构造函数创建组件和class(类)创建组件 构造函数方法创建组件 在构造函数方法中,在组件接收参数的时候,props ...

  10. IE盒模型和标准盒模型之间的差别

    1.W3C标准盒子模型 w3c盒子模型的范围包括margin.border.padding.content,并且content部分不包含其他部分 2.IE盒子模型 IE盒子模型的范围包括margin. ...