实现排序:

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. 第一百八十八节,jQuery,选项卡 UI

    jQueryUI,选项卡 UI 学习要点: 1.使用 tabs 2.修改 tabs 样式 3.tabs()方法的属性 4.tabs()方法的事件 5.tabs 中使用 on 选项卡(tab),是一种能 ...

  2. c#文件路径的获取

    string fullPath = @"\WebSite1\Default.aspx"; string filename = System.IO.Path.GetFileName( ...

  3. 从外部访问 Template (模板)的控件、获取它的属性值

    DataTemplate 和 ControlTemplate 两个类均派生自 FrameWorkTemplate类.这个类有个 FindName方法 供我们查询内部控件.  ControlTempla ...

  4. Unity3D学习笔记——NGUI之Property Binding

    Property Binding:用于绑定两个组件,然后可以将一个组件的信息发送给另一个组件. 效果图如下: 一:使用步骤 1.建立一个Sprite 2.建立一个Label 3.为Sprite添加Pr ...

  5. 【动态规划】skiing

    [动态规划]skiing 时间限制: 1 Sec  内存限制: 128 MB提交: 34  解决: 15[提交][状态][讨论版] 题目描述 Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激. ...

  6. HDU1712ACboy needs your help【分组背包】

    ACboy needs your help Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  7. boost::lockfree::queue

    #include <boost/thread/thread.hpp> #include <boost/lockfree/queue.hpp> #include <iost ...

  8. HTML学习笔记——标准网页设计+使用CSS、Javascript

    一.标准网页设计 1.标准网页概述: 标准网页设计要遵循,内容与表现相分离.   内容 + 表现 = 页面  ---  即 :XHTML + CSS = PAGE 内容与变现相分离,也就是内容使用HT ...

  9. 【BZOJ4403】序列统计 Lucas定理

    [BZOJ4403]序列统计 Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案对10^6+3取模的结果. Input 输入第 ...

  10. 剖析与优化 Go 的 web 应用

    https://mp.weixin.qq.com/s/HDsbZLOK3h8-XjejvPH2sA https://studygolang.com/articles/12685