五、golang实现排序
实现排序:
1、实现一个冒泡排序
2、实现一个选择排序
3、实现一个插入排序
4、实现一个快速排序
冒泡排序
package main import(
"fmt"
) func bsort(a [] int){
for i :=;i<len(a);i++{
for j:=;j<len(a)-i;j++{
if a[j]<a[j-]{
a[j],a[j-]=a[j-],a[j]
}
}
}
} func main() {
b := [...]int{, , , , , , }
bsort(b[:])
fmt.Println(b)
}
选择排序
每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完
package main import (
"fmt"
) func ssort(a [] int){ for i:=;i<len(a);i++{
for j:=i+;j<len(a);j++{
if a[i]<a[j]{
a[i],a[j]=a[j],a[i]
}
}
}
} func main(){
b:=[...]int{,,,,,,}
ssort(b[:])
fmt.Println(b) //[15 10 8 7 5 4 3]
}
方法一
package main import (
"fmt"
) func ssort(a [] int){ for i:=;i<len(a);i++{
var min int=i
for j:=i+;j<len(a);j++{
if a[min]>a[j]{
min=j
}
}
a[i],a[min]=a[min],a[i]
}
} func main(){
b:=[...]int{,,,,,,}
ssort(b[:])
fmt.Println(b) //[15 10 8 7 5 4 3]
}
方法二
插入排序
原理:选择第一个数,然后把后面的数和第一个数进行比较,然后如果小于第一个数的话那么就插入到第一个数前面,如果大于第一个数就插入到第一个数后面,
主要两个for循环,然后第一个for循环要从1开始,第二个for循环因为要和第一个序列进行比较所以要等于i,所以后面的数要大于0,并且要减减的方式
package main import (
"fmt"
) func isort(a[]int){
for i:=;i<len(a);i++{
for j:=i;j>;j--{
if a[j]>a[j-]{
break
}
a[j],a[j-]=a[j-],a[j]
}
}
} func main(){
b:=[...]int{,,,,,,}
isort(b[:])
fmt.Println(b)
}
快速排序
原理:对于无序的序列,把他们划分为左边和右边两个序列,然后进行排序
首先要确定选择的值排序之后的位置,然后递归计算,退出条件是左边的下标大于或者等于右边减去1的下标
package main import(
"fmt"
) func qsort(a []int,left,right int){
if left>=right{ //如果左边大于等于右边减去1的值,就退出
return
} val :=a[left]
k:=left
//确定val所在的位置,这个就是确定val排序之后所在的位置
for i:=left+;i<=right;i++{
if a[i]<val{
a[k]=a[i]
a[i]=a[k+]
k++
}
}
//这个是确定val所对应的在数组中的位置
a[k]=val
//下面是分别递归排序左边和右边
qsort(a,left,k-)
qsort(a,k+,right)
} func main(){
b:=[...]int{,,,,,,}
qsort(b[:],,len(b)-)
fmt.Print(b)
}
五、golang实现排序的更多相关文章
- Golang的排序和查找
Golang的排序和查找 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.排序的基本介绍 排序是将一组数据,依指定的顺序进行排列的过程.排序的分类如下 1>.内部排序 指将 ...
- ElasticSearch源码解析(五):排序(评分公式)
ElasticSearch源码解析(五):排序(评分公式) 转载自:http://blog.csdn.net/molong1208/article/details/50623948 一.目的 一个 ...
- QRowTable表格控件(五)-重写表头排序、支持第三次单击恢复默认排序
目录 一.原生表格 二.效果展示 三.实现方式 1.排序列定制 2.排序交互修改 四.相关文章 原文链接:QRowTable表格控件(五)-重写表头排序.支持第三次单击恢复默认排序 一.原生表格 开发 ...
- Golang语言排序的几种方式
1.Ints,float64s,strings 使用以如函数实现基本类型 sort.Ints sort.Float64s sort.Strings s := []int{4, 2, 3, 1} sor ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第五章:排序、分页和路由
本章的重点是对产品信息增加排序和分页的功能,以及使用ASP.NET Routing特性添加更加友好的URL支持. 注意:如果你想按照本章的代码编写示例,你必须完成第四章或者直接从www.apress. ...
- Golang之排序算法
冒泡排序 package main //冒泡排序 import "fmt" func bsort(a []int) { ; i < len(a); i++ { ; j < ...
- MySql(五)select排序查询
举个栗子/**查询员工信息,要求工资按照从高到低进行排序(默认升序)**/SELECT * FROM employees ORDER BY salary ASC;/**方法2:**/SELECT * ...
- 数据结构(四十五)选择排序(1.直接选择排序(O(n²))2.堆排序(O(nlogn)))
一.选择排序的定义 选择排序的基本思想是:每次从待排序的数据元素集合中选取最小(或最大)的数据元素放到数据元素集合的最前(或最后),数据元素集合不断缩小,当数据元素集合为空时排序过程结束.常用的选择排 ...
- golang数组 排序和查找
package main import "fmt" func BubbleSort(arr *[5]int){ fmt.Println("排序前arr=",(* ...
随机推荐
- 第一百八十七节,jQuery,知问前端--cookie 插件,注册成功后生成cookie,显示登录状态
jQuery,知问前端--cookie 插件 学习要点: 1.使用 cookie 插件 2.注册直接登录 Cookie 是网站用来在客户端保存识别用户的一种小文件.一般来用库可以保存用户登 录信息.购 ...
- Web Services 概要
WSDL WSDL 是基于 XML 的用来描述 Web services 以及如何访问它们的一种语言. WSDL 可描述 web service,连同用于 web service 的消息格式和协议的细 ...
- Hibernate使用注释
可以使用注释创建hibernate应用程序. 有许多注释可用于创建hibernate应用程序,如@Entity,@Id,@Table等. Hibernate注释基于JPA 2规范,并支持所有功能.所有 ...
- arm-linux字符设备驱动开发之---简单字符设备驱动
一.linux系统将设备分为3类:字符设备.块设备.网络设备.使用驱动程序: 1.字符设备:是指只能一个字节一个字节读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后数据.字符设备是面 ...
- OpenCV学习笔记一:OpenCV概览与配置编译
一,OpenCV OpenCV官方网站:http://opencv.org/ OpenCV目前最新代码库地址:https://github.com/itseez/opencv 二,简介: OpenC ...
- IDLE崩溃:IDLE's subprocess didn't make connection. Either IDLE can't start a...
今天在测试Python脚本的时候,突然间发现,脚本不能启动了,还弹出了“IDLE's subprocess didn't make connection. Either IDLE can't star ...
- python MD5操作
def my_md5(str): import hashlib new_str = str.encode() #把字符串转成bytes类型 # new_str = b'%s'%str #把字符串转成b ...
- 《PhotoShop CS6 》第一节 矢量与分辨率
分辨率:不一定是方形,可以调整其比例. 色彩模型:色相Hue(圆周,冷暖相接),饱和度Saturation(半径),明度Brightness(轴,从黑到白).
- 【BZOJ4325】NOIP2015 斗地主 搜索+剪枝
[BZOJ4325]NOIP2015 斗地主 Description 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗 ...
- Toeplitz matrix
w https://en.wikipedia.org/wiki/Toeplitz_matrix Proof of Stolz-Cesaro theorem | planetmath.org http ...