1、冒泡排序

  1. // 冒泡排序
  2. a := []uint8{9, 20, 10, 23, 7, 22, 88, 102}
  3. for i := 0; i < len(a); i++ {
  4. for k := i + 1; k < (len(a) - i); k++ {
  5. if a[i] > a[k] {
  6. a[i], a[k] = a[k], a[i]
  7. }
  8. }
  9. }
  10. fmt.Println(a)

冒泡排序

2、选择排序

  1. // 选择排序
  2. a := []int8{9, 20, -1, 10, -5, 23, 7, 22, 88, 102}
  3. for i := 0; i < len(a); i++ {
  4. var (
  5. min_n int8 = a[i]
  6. min_i int = i
  7. )
  8. for k := i + 1; k < len(a); k++ {
  9. if a[k] < min_n {
  10. min_n = a[k]
  11. min_i = k
  12. }
  13. }
  14. a[i], a[min_i] = a[min_i], a[i]
  15. }
  16. fmt.Println(a)

选择排序

3、插入排序

  1. a := []int8{9, 20, 22, -1, 10, -5, 23, 7, 7, 22, 88, 102}
  2. for i := 1; i < len(a); i++ {
  3. for k := i - 1; k >= 0; k-- {
  4. if a[k+1] < a[k] {
  5. a[k+1], a[k] = a[k], a[k+1]
  6. }
  7. }
  8. }
  9. fmt.Println(a)

插入排序

4、随机数出现的概率为平方

正常来讲,对于[0-10)范围内的任意一个整除的随机数概率为0.1,如果我要实现其中任意一个整数的随机数为0.1^2呢?

下面的示例中,是计算随机数为0-4范围的平方,正常来讲,0-4范围是5个,所以出现的概率为1/2。求其平方,即0.25

  1. // 随机数的概率为平方
  2. var count float64 = 0
  3. for i := 0; i < 100000; i++ {
  4. if rand.Intn(10) < 5 {
  5. if rand.Intn(10) < 5 {
  6. count++
  7. }
  8. }
  9. }
  10. p := count / 100000
  11. fmt.Println(p)

随机数平方概率

5、这是一个题目:

我当前有一个函数可以等概率随机返回[1-5]之间的任意一个数,在不使用内部函数的前提下,如何只根据当前的这个随机函数来等概率返回[1-7]中的任意一个数呢?

下面是这个随机函数:

  1. func f1() int {
  2. rn := rand.Intn(5) + 1
  3. return rn
  4. }

解题思路是这样的,可以先构造一个函数,等概率返回0和1,然后再构造一个函数,1-7中的数,可以用三个bit位来表示了,但是还有返回0的时候,当返回0的时候,扔掉,重新来随机

下面是等概率返回0和1的函数:

  1. func f2() int {
  2. for {
  3. num_1 := f1()
  4. if num_1 < 3 {
  5. return 0
  6. } else if num_1 == 3 {
  7. continue
  8. } else {
  9. return 1
  10. }
  11. }
  12. }

f2

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

  1. func f3() int {
  2. for {
  3. num_2 := (f2() << 2) + (f2() << 1) + f2()
  4. if num_2 == 0 {
  5. continue
  6. } else {
  7. return num_2
  8. }
  9. }
  10. }

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. WebSocket集群解决方案,不用MQ

    ​ 首先不了解WebSocket的可以先看看这篇文章,以及传统的WebSocket方案是怎么做的,https://www.cnblogs.com/jeremylai7/p/16875115.html ...

  2. 商品获价API调用说明:获取商品历史价格信息 代码分享

    接口名称:item_history_price 公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中)(获取测试key和secret接入) secre ...

  3. Java---->集合(上)

    一.集合的框架 1.集合.数组都是对多个数据进行存储操作的结构,简称Java容器.  *   说明:此时的存储,主要是指能存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi,数据库中) ...

  4. 一步步制作下棋机器人之 coppeliasim进行Scara机械臂仿真与python控制

    稚晖君又发布了新的机器人,很是强大. 在编写时看到了稚晖君的招聘信息,好想去试试啊! 小时候都有一个科幻梦,如今的职业也算与梦想有些沾边了.但看到稚晖君这种闪着光芒的作品,还是很是羡慕. 以前就想做一 ...

  5. Python的函数和方法如何区分呢?

    结论>>>:无论是函数还是方法都用def关键字来定义 方法:只要是自动传值都是方法.由谁来调用.会把自身传入 函数:有几个值就传几个值否则会报错 目录 一.详细介绍函数和方法 二.用 ...

  6. 如何通过Java代码将添加页码到PDF文档?

    页码可以清楚了解总页数.定位页数快速寻找自己所要的文段.打印时不会分不清头中尾.很多人在使用办公软件的时候就会选择PDF进行文档的保存,因为PDF在保存之后不会出现乱码甚至是格式改变的情况.在PDF中 ...

  7. [WEB]对于"Refused to execute script from 'http://xx.xx.xx/yy/zz.js' because its MIME type ('') is not executable, and strict MIME type checking is enabled."问题的解决办法

    1 文由 阶段一:对WEB服务器HTTP通信的header设置了安全头(X-Content-Options:nosniff) 两个月前协助交付侧大哥处理.修复一个三级等保项目的第三方安全公司释出的安全 ...

  8. 打造自己的ChatGPT:OpenAI的API接入技巧

    打造自己的ChatGPT:OpenAI 的API接入技巧 2023年3月更新 OpenAI 在3月1日的时候放出了ChatGPT的接口,新的接口可以使用 GPT-3.5 模型,同时接口参数更新为了 m ...

  9. c#快速入门~在java基础上,知道C#和JAVA 的不同即可

    观看下文前提:如果你的主语言是java,现在想再学一门新语言C#,下文是在java基础上,对比和java的不同,快速上手C# C# 学习参考文档和开发工具 微软c#官方文档:https://learn ...

  10. Centos 7安装Elasticsearch 7.6

    Centos 7安装Elasticsearch 7.6 Elasticsearch与JDK版本对应关系 在安装 Elasticsearch 时,要注意 Elasticsearch 与 JDK 的版本对 ...