008_用go语言实现简单的冒泡排序
冒泡排序是各个语言中的基本排序算法,本次我们用go语言实现简单的冒泡排序
package main import "fmt" // [13,10,5,7,2]
// [10,13,5,7,2]
// [10,5,13,7,2]
// [10,5,7,13,2]
// [10,5,7,2,13] func bubble_sort(a []int) {
for i := len(a) - 1; i > 0; i-- {
for j := 0; j < i; j++ {
if a[j] > a[j+1] {
a[j], a[j+1] = a[j+1], a[j]
}
}
}
} func main() {
a := []int{13, 10, 5, 7, 2}
bubble_sort(a)
fmt.Println(a)
}
代码运行后,可以看到排序完成
[2 5 7 10 13]
让我们来分析上面的代码。冒泡排序整个的逻辑就是,让第一个与第二个比较,然后交换位置,第二个与第三个比较,然后交换位置。最终将最大的冒泡到切片的最右侧。接着,再冒泡一轮,从第二轮冒泡开始,最右侧的数不用比较了,接着第三轮,直到最左侧两个数交换完毕为止。
所以在代码中,我们设置了两层循环。第一层的循环,是比较的轮数,第二层循环,是在每一轮中,每一个数的比较。所以第一层循环的i的取值范围就是len(a)-1,即4,然后每一次减1,最后一轮只有第一个数和第二个数比较。第二层循环的取值范围,是根据第一层循环来的,也是每一轮减1,所以当最后一轮比较时,只剩下两个数了。
008_用go语言实现简单的冒泡排序的更多相关文章
- 李洪强漫谈iOS开发[C语言-042]-简单计算器
李洪强漫谈iOS开发[C语言-042]-简单计算器
- 谁说C语言很简单?
前两天,Neo写了一篇<语言的歧义>其使用C语言讨论了一些语言的歧义.大家应该也顺便了解了一下C语言中的很多不可思异的东西,可能也是你从未注意到的东西. 是的,C语言并不简单,让我们来看看 ...
- Linux 用C语言实现简单的shell(2)
不知不觉两周没有发文了,因为“一万美金的福特奖学金答辩”,ACM比赛,网络论文阅读和网络大作业一大堆事把时间冲散了,所以先写一篇博文补上之前一坑. 之前发了一篇关于linux 用C语言实现简单shel ...
- Java语言实现简单FTP软件------>FTP软件主界面的实现(四)
首先看一下该软件的整体代码框架 1.首先介绍程序的主入口FTPMain.java,采用了一个漂亮的外观风格 package com.oyp.ftp; im ...
- Java语言实现简单FTP软件------>源码放送(十三)
Java语言实现简单FTP软件------>FTP协议分析(一) Java语言实现简单FTP软件------>FTP软件效果图预览之下载功能(二) Java语言实现简单FTP软件----- ...
- Java语言实现简单FTP软件------>上传下载管理模块的实现(十一)
1.上传本地文件或文件夹到远程FTP服务器端的功能. 当用户在本地文件列表中选择想要上传的文件后,点击上传按钮,将本机上指定的文件上传到FTP服务器当前展现的目录,下图为上传子模块流程图 选择好要上传 ...
- C语言,简单计算器【上】
由于工作需要最近在研究PHP扩展,无可避免的涉及到了C语言.从出了学校以后C语言在实际工作中还没有用到过,所以必须要先进行一点复习工作.个人认为对于熟悉一样东西说最好的方法是上手实践.于是便想起了当时 ...
- 用c语言实现简单的五子棋
用c语言实现简单的五子棋 这个小游戏是从零开始的实现的,框架灵感来自于小游戏<走迷宫>. 游戏代码配置: 二维数组+简单逻辑+getch读取键盘+windows函数(刷屏,改颜色,改窗口大 ...
- 实验报告系列:实验一 HTML语言的简单网页制作
实验一 HTML语言的简单网页制作 一.实验目的: 1.掌握常用的HTML语言标记: 2.利用文本编辑器建立HTML文档,制作简单网页. 3.学习将其它格式的文档转换成HTML格式的文档 二.实验内容 ...
随机推荐
- 龙芯开源社区上线.NET主页
龙芯团队从2019年7 月份开始着手.NET Core的MIPS64支持研发,经过将近一年的研发,在2020年6月18日完成了里程碑性的工作,在github CoreCLR 仓库:https://gi ...
- java 数据结构(四):java常用类四 比较器以及其他类
比较器 1.Java比较器的使用背景: Java中的对象,正常情况下,只能进行比较:== 或 != .不能使用 > 或 < 的但是在开发场景中,我们需要对多个对象进行排序,言外之意,就需要 ...
- 机器学习实战基础(四十一):随机森林 (八)附录 Bagging vs Boosting
- Markdown 教程之编辑器
1. Typora 编辑器 Typora 是一款支持实时预览的 Markdown 文本编辑器.它有 OS X.Windows.Linux 三个平台的版本,并且由于仍在测试中,是完全免费的. 2. 安装 ...
- 题解 CF1359A 【Berland Poker】
题意 给出 \(n,m,k\) ,表示 \(k\) 名玩家打牌,共 \(n\) 张牌,\(m\) 张王,保证 \(k|n\) ,记得分为 拿到最多王的玩家手中王数 \(-\)拿到第二多王的玩家手中的王 ...
- 详解 CmProcess 跨进程通信的实现
CmProcess 是 Android 一个跨进程通信框架,整体代码比较简单,总共 20 多个类,能够很好的便于我们去了解跨进程实现的原理. 个人猜测 CmProcess 也是借鉴了 VirtualA ...
- asp.net core appsetting.json 绑定读取
appsettings.json中,具有: "AppSettings": { "AzureConnectionKey": "***", &q ...
- Typora + PicGo + Gitee 实现图片自动上传到图床
1.下载并安装 Typora (windows版本) https://typora.io/#windows 2.设置图像 文件 -- 偏好设置 -- 图像 3.上步点击下载PicGo(app) 后,去 ...
- python基础--闭包、装饰器
装饰器的详细使用 (1)小知识点补充 在这里我们先学一个简单的知识点. li = ['alex', '银角', '女神', 'egon', '太白'] for i in enumerate(li): ...
- Spring Security 实战干货:从零手写一个验证码登录
1. 前言 前面关于Spring Security写了两篇文章,一篇是介绍UsernamePasswordAuthenticationFilter,另一篇是介绍 AuthenticationManag ...