排序操作主要都在sort包中,导入就可以使用了
import("sort")

常用的操作

sort.Ints:对整数进行排序
sort.Strings:对字符串进行排序
sort.Float64s:对浮点数进行排序

使用例子:

package main

import (
"sort"
"fmt"
) func main() {
// 对整数进行排序
var s = []int{2,3,5,10,20,1,0}
sort.Ints(s)
fmt.Println(s) //对字符串排序
var b = []string{"cc","yy","dd","ee","zz"}
sort.Strings(b)
fmt.Println(b) // 对浮点数排序
var d = []float64{9.1,1.2,3,2,1.9,2.2,10.1}
sort.Float64s(d)
fmt.Println(d)
}

同样还有以下几个常用的查找操作

sort.SearchInts(a[]int,b int):从整数切片a中查找b的索引位置
sort.SearchFloat64s(a[]float64,b float64):从浮点切片中查找b的索引位置
sort.Strings(a[]strings,b string):从字符切片中查找b的索引位置

使用例子如下:

package main

import (
"sort"
"fmt"
) func main() {
// 从有序的整数切片中获取某个整数所在的索引
var a = []int{1,2,3,4,5}
res := sort.SearchInts(a,2)
fmt.Println(res)
// 从有序的浮点数切片中获取某个浮点数的索引
var b = []float64{1.1,10.8,23.1,40.6,43.9}
res2 := sort.SearchFloat64s(b,43.9)
fmt.Println(res2) // 从有序的字符串切片中获取某个字符串的索引
var c = []string{"aa","bb","cc","dd"}
res3:= sort.SearchStrings(c,"cc")
fmt.Println(res3) }

特殊排序(也是接口的一个应用)

在sort包中对于基本数据类型如:int,float64,string等的排序都已经提供了上面提到的方法,但是对于特殊的数据类型,例如:map,struct等排序我们如何排序这里就需要用到sort.Sort方法
官网地址:https://golang.google.cn/pkg/sort/#Sort
如下图:

当我们点开Interface可以看到如下:

从上图我们可以看出Interface其实是一个接口类型,只要我们事先了文档中说的Len(),Less(i,j int)bool,Swap(i,j int)就实现了Interface这个接口,同样的我们就可以调用sort.Sort方法,通过下面的例子来理解

package main

import (
"fmt"
"math/rand"
"sort"
) type Student struct{
name string
age int
score float32
} type StudentSlice []*Student func(p StudentSlice)Len()int{
return len(p)
} func(p StudentSlice)Less(i,j int)bool{
return p[i].age > p[j].age
} func(p StudentSlice)Swap(i,j int){
p[i],p[j] = p[j],p[i]
} func main() {
var studentArr StudentSlice
for i:=0;i<10;i++{
var s = &Student{
name:fmt.Sprintf("赵%d",i),
age:rand.Intn(100),
score:rand.Float32()*100,
}
studentArr = append(studentArr,s)
}
fmt.Println("排序前:")
for i:=0;i<len(studentArr);i++{
fmt.Println(studentArr[i])
} sort.Sort(studentArr)
fmt.Println("排序后:")
for i:=0;i<len(studentArr);i++{
fmt.Println(studentArr[i])
}
}

Go基础之--排序和查找操作的更多相关文章

  1. python基础一 ------排序和查找算法

    插入排序; 假设数组长度为n,先从第二个元素开始,与前一个元素比较,之后将较小的元素    放在前面,现在前两个元素是有顺序的,这时取第三个元素,与前一个元素(也就是第二个)比较,较小的放在前面   ...

  2. 二叉排序树(BST)创建,删除,查找操作

    binary search tree,中文翻译为二叉搜索树.二叉查找树或者二叉排序树.简称为BST 一:二叉搜索树的定义 他的定义与树的定义是类似的,也是一个递归的定义: 1.要么是一棵空树 2.如果 ...

  3. SpringBoot JPA实现增删改查、分页、排序、事务操作等功能

    今天给大家介绍一下SpringBoot中JPA的一些常用操作,例如:增删改查.分页.排序.事务操作等功能.下面先来介绍一下JPA中一些常用的查询操作: //And --- 等价于 SQL 中的 and ...

  4. MongoDB学习(查找文档和其他数据查找操作)

    理解Cursor对象和查询运算符 cursor对象 cursor对象相当于一个指针,可通过迭代它来访问MongdoDB数据库中的一组对象. 在使用 find() 方法查询时,返回的并非实际文档,而是一 ...

  5. java基础-数组的折半查找原理

    java基础-数组的折半查找原理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让你写一个数组的查找功能,需求如下:在一个数组中,找一个元素,是否存在于数组中, 如果存在就返回 ...

  6. UVA.10474 Where is the Marble ( 排序 二分查找 )

    UVA.10474 Where is the Marble ( 排序 二分查找 ) 题意分析 大水题一道.排序好找到第一个目标数字的位置,返回其下标即可.暴力可过,强行写了一发BS,发现错误百出.应了 ...

  7. selenium基础(下拉菜单操作)

    selenium基础(下拉菜单操作) 非select/option元素: 1.触发下拉列表出现 2.等待下拉列表中的元素出现,然后进行选择元素即可. select/option元素: 下拉框操作-Se ...

  8. C++ 排序、查找的应用

    // order.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include "string.h" #includ ...

  9. leetcode题解:Search in Rotated Sorted Array(旋转排序数组查找)

    题目: Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7  ...

随机推荐

  1. 自定义省市选择器 微信小程序多列选择器

    由于微信小程序的选择器为省市区选择器共3列 如我仅需要省市2列的选择器 就需要我们另寻他法找来找去没有合适的 只能自己写了 1. 首先我们把所需要的省数据 市县数据放在一个 p_c.js 文件里面,使 ...

  2. HDU 5538 House Building(模拟——思维)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5538 Problem Description Have you ever played the vi ...

  3. 算法,java代码实现打印万年历

      万年历 以1900年1月1号星期一为时间原点 星期日 第一天 星期一 第二天 星期二 第三天 星期三 第四天 星期四 第五天 星期五 第六天 星期六 第七天            1.计算出当前日 ...

  4. 使用 video.js 开发 HTML5 视频页面

    时间 2015-05-13 17:11:58 The GIS Guy 原文  http://thegisguy.tk/html5-video-using-video-js/ 主题 Video.js H ...

  5. 【编程技巧】一些 NSArray 的基本操作代码例子

    /*---------------------------切分数组------------------------------*/ //从字符串分割到数组- componentsSeparatedBy ...

  6. 服务器大量的fin_wait1 状态长时间存在原因分析-1

    上文描述了在出现大量fin-wait-1出现的原因,占用的内存等,这里讲一下如何处理这种情况. 首先,fin发送之后,有可能会丢弃,那么发送多少次这样的fin包呢?fin包的重传,也会采用退避方式,在 ...

  7. 通过psping测试结果,初步判断远端服务器的状态

    1.psping的输出结果为如下正常显示时,说明远端服务器的IP及端口可用 C:\Users\he.liming>psping 139.219.66.205:4352 PsPing v2.10 ...

  8. MySQL中时间函数NOW()和SYSDATE()的区别

    mysql中日期函数还是比较常用的.主要有NOW()和SYSDATE()两种,虽然都表示当前时间,但使用上有一点点区别. NOW()取的是语句开始执行的时间,SYSDATE()取的是动态的实时时间. ...

  9. python 爬虫入门----案例爬取上海租房图片

    前言 对于一个net开发这爬虫真真的以前没有写过.这段时间学习python爬虫,今天周末无聊写了一段代码爬取上海租房图片,其实很简短就是利用爬虫的第三方库Requests与BeautifulSoup. ...

  10. 奇怪的问题0xc000007b

    自己的程序运行debug版本正常,运行release版本main函数还未进入就弹出异常. 令我感觉很奇怪. 觉得应该就是动态库哪里有问题. 仔细检查,发现并没有缺什么动态库.也不存在版本问题. 最后我 ...