二分查找


func main() {
arr := []int{0, 1, 2, 3, 4, 5, 6}
fmt.Println(BinarySearch(arr, 5))
}
func BinarySearch(s []int, k int) int {
lo, hi := 0, len(s)-1
for lo <= hi {
m := (lo + hi) >> 1
if s[m] < k {
lo = m + 1
} else if s[m] > k {
hi = m - 1
} else {
return m
}
}
return -1
}

  

快速排序

func main() {
a := []int{38, 100, 4, 2, 8, 80, 10}
qsort(a, 0, len(a)-1)
fmt.Println(a)
} //快速排序 找到一个数,左边都比他小,右边都比他大
//38, 1, 4, 5, 10
func partion(a []int, i, j int) int {
//var i ,j = left,right
//1.当左边<右边
for i < j {
//2.1当右边大于左边 什么也不做
for j > i && a[j] > a[i] {
j--
}
//2.2 否则,交换位置
a[j], a[i] = a[i], a[j]
//2.3 左边都小于自己 什么也不做
for i < j && a[i] < a[j] {
i++
}
//2.4 否则交换位置
a[j], a[i] = a[i], a[j]
}
//返回的是,一个数字的正确角标,然后可以根据这个角标去划分两个区域
return i
} func qsort(a []int, left, right int) {
//如果左边等于右边,就是只有一个元素,不需要排序,直接返回
if left >= right {
return
}
mid := partion(a, left, right)
qsort(a, left, mid-1)
qsort(a, mid+1, right)
}

  

golang 快速排序及二分查找的更多相关文章

  1. C语言练习题1(关于快速排序,二分查找与运行时间)

    刚刚完成师兄给的一道题目: 随机生成10000位数,进行快速排序后,用二分查找法定位到某个要查询的数(键盘输入某个要查询的数),  结果输出查询的时间,以及是否查到 分享下自己的解题思路: 1,要懂得 ...

  2. 快速排序和二分查找(Java)

    import java.util.Arrays; public class Main { public static void main(String[] args) { int[] data = { ...

  3. 快速排序和二分查找(Javascript)

    var data = [8, 3, 4, 1, 18, 22, 11, 3, 5, 6, 2, 1, 77] quickSort(data, 0, data.length - 1) console.l ...

  4. 快速排序和二分查找(Go)

    package main import ( "fmt" "sync") var waitGroup sync.WaitGroup func main() { d ...

  5. 常用算法1 - 快速排序 & 二分查找

    1. 二分查找法: 二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回对应的数组下标,没有找到返回-1. 二分查找法要求数据为一组有序的序列(大到小 ...

  6. C# 快速排序--二分查找法--拉格朗日插值法

    1.快速排序  参考自: https://www.cnblogs.com/yundan/p/4022056.html namespace 快速排序算法 { class Program { static ...

  7. Golang实现二分查找法

    二分查找法就是实现在一组有序的数字数组集合中最快找到指定元素的下标 思路 ①先找到中间的下标middle = (leftIndex + RightIndex) /2 ,然后让中间的下标值和FindVa ...

  8. js基本算法:冒泡排序,二分查找

    知识扩充: 时间复杂度:算法的时间复杂度是一个函数,描述了算法的运行时间.时间复杂度越低,效率越高. 自我理解:一个算法,运行了几次时间复杂度就为多少,如运行了n次,则时间复杂度为O(n). 1.冒泡 ...

  9. PHP-----二维数组和二分查找

    二维数组由行和列组成.由arr[$i][$j]表示,先后表示行和列,类似于坐标点. 打印二维数组-----通过两次遍历,第一次遍历每一行,第二次遍历每一行的具体元素,并且通过使用count($arr[ ...

随机推荐

  1. firewalld 防火墙配置

    1. firewalld-cmd 命令中使用的参数以及作用  --get-default-zone 查询默认的区域名称 --set-default-zone=<区域名称> 设置默认的区域, ...

  2. Java简单操作Zookeeper

    Zookeeper客户端链接 <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId ...

  3. Nginx+Keepalived(二)

    Linux CentOS7安装Nginx 1.gcc 安装 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境. yum install gcc-c++ 2.PCRE pcre- ...

  4. windows下git 同步数据到github的常见问题

    常用排错方法: 1,查看连接是否正常. 2,push数据有时会报错,这是由于远程repository和我本地的repository冲突造成. 解决方法: 1.使用强制push的方法: git push ...

  5. Android 网络编程的陷阱

    陷阱一,不要在主线程或者UI线程中建立网络连接 Androd4.0以后,不允许在主线程中建立网络连接,不然会出现莫名其妙的程序退出情况.正确的做法是在主线程中,创建新的线程来运行网络连接程序. // ...

  6. linux系统ssh免密钥登录配置

    linux主机配置ssh免密钥登录,具体配置如下: 1.执行命令ssh-keygen -t rsa,生成公钥和私钥(具体步骤详见下图) 2.会在当前用户的家目录的.ssh/生成公钥和私钥, 3.执行s ...

  7. C# 自制报表组件 EzReportBuild 2.5

    就写到这里,不玩这个了,game over. 2.0版本添加了多报表页嵌套功能,每份报表可设置多页,每页可设置不同的纸张大小.数据表.页面规则等,并可对报表页次序即时调整,同时,优化了显示,报表显示更 ...

  8. IIS 设置查询字符串长度

  9. vue踩坑(二):跨域以及携带cookie

    最近后台需求要在请求的时候传cooki给后台,正常情况下拿到cookie后存在cookie里,同域名下是会自己带到请求头里的,但是因为要在本地调试,那么问题就来了,localhost:8080下面的c ...

  10. 【转载】chown和chmod使用

    二.指令名称 : chown 使用权限 : root 使用方式 : chown [-cfhvR] [--help] [--version] user[:group] file... 说明 : Linu ...