实现排序:

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实现排序的更多相关文章

  1. Golang的排序和查找

    Golang的排序和查找 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.排序的基本介绍 排序是将一组数据,依指定的顺序进行排列的过程.排序的分类如下 1>.内部排序 指将 ...

  2. ElasticSearch源码解析(五):排序(评分公式)

    ElasticSearch源码解析(五):排序(评分公式) 转载自:http://blog.csdn.net/molong1208/article/details/50623948   一.目的 一个 ...

  3. QRowTable表格控件(五)-重写表头排序、支持第三次单击恢复默认排序

    目录 一.原生表格 二.效果展示 三.实现方式 1.排序列定制 2.排序交互修改 四.相关文章 原文链接:QRowTable表格控件(五)-重写表头排序.支持第三次单击恢复默认排序 一.原生表格 开发 ...

  4. Golang语言排序的几种方式

    1.Ints,float64s,strings 使用以如函数实现基本类型 sort.Ints sort.Float64s sort.Strings s := []int{4, 2, 3, 1} sor ...

  5. ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第五章:排序、分页和路由

    本章的重点是对产品信息增加排序和分页的功能,以及使用ASP.NET Routing特性添加更加友好的URL支持. 注意:如果你想按照本章的代码编写示例,你必须完成第四章或者直接从www.apress. ...

  6. Golang之排序算法

    冒泡排序 package main //冒泡排序 import "fmt" func bsort(a []int) { ; i < len(a); i++ { ; j < ...

  7. MySql(五)select排序查询

    举个栗子/**查询员工信息,要求工资按照从高到低进行排序(默认升序)**/SELECT * FROM employees ORDER BY salary ASC;/**方法2:**/SELECT * ...

  8. 数据结构(四十五)选择排序(1.直接选择排序(O(n²))2.堆排序(O(nlogn)))

    一.选择排序的定义 选择排序的基本思想是:每次从待排序的数据元素集合中选取最小(或最大)的数据元素放到数据元素集合的最前(或最后),数据元素集合不断缩小,当数据元素集合为空时排序过程结束.常用的选择排 ...

  9. golang数组 排序和查找

    package main import "fmt" func BubbleSort(arr *[5]int){ fmt.Println("排序前arr=",(* ...

随机推荐

  1. Distinct powers (Project Euler 29 加强版)

    题目大意: $2<=a,b<=n$ 求 $a^b$能表示多少不同的正整数. 原题中n=100,可以直接暴力求解,常见的两种解法是写高精度或者取对数判断相等. 直觉告诉我应该有更加优秀的解法 ...

  2. Android ADB工具-操作手机和获取手设备信息(四)

    Android ADB工具-操作手机和获取手设备信息(四) 标签(空格分隔): Android ADB 6. 其它命令 命令 功能 adb shell input text <content&g ...

  3. Struts2上传文件(1)

    使用Struts框架后, Struts2框架不会处理multipart/form-data的请求,它需要调用其他的上传文件框架来解析二进制数据.但是Struts在原有的上传解析器基础上做了很多的封装, ...

  4. 46、PopWindow工具类

    <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http: ...

  5. ES6学习笔记之变量声明let,const

    最近用淘宝的weex做了个项目,最近稍微闲下来了.正好很久没有接触RN了,所以趁这个机会系统的学习一下ES6的相关知识. 孔子说:没有对比就没有伤害.所以我们要拿ES6和ES5好好对比的学习.这样才能 ...

  6. Kotlin——初级篇(三):数据类型详解

    任意一种开发语言都有其数据类型,并且数据类型对于一门开发语言来说是最基本的构成,同时也是最基础的语法.当然,Kotlin也不例外.Kotlin的数据类型和Java是大致相同的,但是他们的写法不同,并且 ...

  7. jetty;tomcat;热部署

    [说明]今天上午进行了jetty的插件部署,下午进行了tomcat的插件部署,晚上有其它事情需要回校 一:今日完成 1)搞定插件直接部署到jetty 2)搞定插件直接部署到tomcat 3)了解了一下 ...

  8. 【BZOJ2793】[Poi2012]Vouchers 调和级数

    [BZOJ2793][Poi2012]Vouchers Description 考虑正整数集合,现在有n组人依次来取数,假设第i组来了x人,他们每个取的数一定是x的倍数,并且是还剩下的最小的x个.正整 ...

  9. Cocos2d-x Lua中生命周期函数

    场景(Scene)以及所有节点(Node)的生命周期事件如下:enter.进入场景时候触发.enterTransitionFinish.进入场景而且过渡动画结束时候触发.exit.退出场景时候触发 . ...

  10. Keywords Search(AC自动机模板)

    Keywords Search Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others ...