实现排序:

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. 创建一个动作-Action类:

    让我们创建一个Java文件HelloWorldAction.java的Java资源> SRC下一个的包名com.yiibai.struts2与下面的内容. package com.yiibai. ...

  2. Fedora13下编译busybox-1.15.0出现can not find lcrypt错误

    在Fedora 13 系统上编译busybox(非交叉编译)产生错误 root@localhost # make ... gcc -Wall -Wshadow -Wwrite-strings -Wun ...

  3. jQuery + Cookie引导客户操作

    网址:http://www.sucaihuo.com/js/707.html 示例:http://www.sucaihuo.com/jquery/7/707/demo/

  4. js 数组容易弄混的那些方法

    js数组中 我们很多数组的方法都知道其中的含义 但是每一次用的都不是很顺手 下边我给大家写了一个小小的demo 来理解那些 近似”双胞胎“的东西 // splice方法 var a=[1,2,3,4, ...

  5. Python 内置函数、作用域、闭包、递归

    一.内置函数如何使用 help()一下: 如想看min()咋用?在shell中:help(min) 二.部分内置函数 (一).排序:sorted() li = [(1, 2, 3, 4), (7, 8 ...

  6. 【BZOJ1812】[Ioi2005]riv 树形DP

    [BZOJ1812][Ioi2005]riv Description 几乎整个Byteland王国都被森林和河流所覆盖.小点的河汇聚到一起,形成了稍大点的河.就这样,所有的河水都汇聚并流进了一条大河, ...

  7. IIPP迷你项目(二)"Guess the Number!"

    本来这个程序是早就编完了的,一直没时间发布博客.时至今日已时隔多天,也算是复习一下事件驱动型编程的过程吧. 1 事件驱动型编程 本质上这次的作业是披着猜数字皮的图形化界面编程,好在 simplegui ...

  8. Machine Learning - week 2 - 编程练习

      3. % J = COMPUTECOST(X, y, theta) computes the cost of using theta as the % parameter for linear r ...

  9. Just common sense.

    w A's intelligence is just B's common sense.

  10. 【python】-- Ajax

    Ajax AJAX,Asynchronous JavaScript and XML (异步的JavaScript和XML),一种创建交互式网页应用的网页开发技术方案. 异步的JavaScript:使用 ...