package main

import (
"fmt"
"sync"
) var waitGroup sync.WaitGroup func main() { data := []int{2, 3, 5, 1, 4, 5, 2, 13, 51, 9, 10, 15, 17, 6, 21, 33, 44, 77, 22}
fmt.Println(data) waitGroup.Add(1)
go performQuickSort(data) waitGroup.Wait() var index = binarySearch(data, 4)
fmt.Println(index)
} func performQuickSort(data []int) {
defer waitGroup.Done()
quickSort(data, 0, len(data)-1)
fmt.Println(data)
} func quickSort(data []int, left int, right int) {
index := partition(data, left, right) if left < index-1 {
quickSort(data, left, index-1)
} if right > index {
quickSort(data, index, right)
}
} func partition(data []int, left int, right int) int {
i := left
j := right pivot := data[left+(right-left)/2] for i <= j { for data[i] < pivot {
i++
} for data[j] > pivot {
j--
} if i <= j {
temp := data[i]
data[i] = data[j]
data[j] = temp
i++
j--
}
} return i;
} func binarySearch(data []int, target int) int { left := 0;
right := len(data) - 1 for left <= right {
mid := left + (right-left)/2
if data[mid] < target {
left = mid + 1
} if data[mid] >= target {
right = mid - 1
}
} return left
}

快速排序和二分查找(Go)的更多相关文章

  1. golang 快速排序及二分查找

    二分查找 func main() { arr := []int{0, 1, 2, 3, 4, 5, 6} fmt.Println(BinarySearch(arr, 5)) } func Binary ...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. javascript实现快速排序和二分法查找

    1.快速排序: 思路:找到数组中间的元素,把它单拎出来,然后从0开始判断数组中的元素比该基准元素大还是小,小的存左边,大的存右边,然后如此反复递归,得出结果. function quickSort(a ...

随机推荐

  1. linux服务器之间互传文件

    1.传递单个文件 linux A 服务器 上的文件(假设文件为a.php) 复制到 linux B 服务器上(假设复制后的文件名为b.php) 格式为  scp 文件a的绝对路径  B服务器用户名@B ...

  2. eval解惑

    let a = 1, b = 2, c = 3; let arr = [a, b, c]; function test(p1, p2, p3) { console.log(`${p1} ~ ${p2} ...

  3. Delphi 字符型数据

  4. Electron 5.0 发布

    Electron 5.0的主要变化 打包应用程序现在的行为与默认应用程序相同.将创建一个默认的应用程序菜单(除非应用程序有一个),并且将自动处理全部关闭窗口的事件. (除非应用程序处理事件) 现在默认 ...

  5. matlab 中figure的图像 抗锯齿

    linehandle = plot(xxxxxx); set( linehandle, 'linesmoothing', 'on' );

  6. Big Data(七)MapReduce计算框架

    二.计算向数据移动如何实现? Hadoop1.x(已经淘汰): hdfs暴露数据的位置 1)资源管理 2)任务调度 角色:JobTracker&TaskTracker JobTracker: ...

  7. java面试(集合类)03

    1.Collection 和 Collections 有什么区别? Collection 是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法,所有集合都是它的子类,比如 List.Set 等 ...

  8. Django学习系列3:创建仓库

    在创建仓库之前,在项目superlists中新建一个Python文件,命名为functional_tests.py,里面的内容如下: # File: functional_test.py # Auth ...

  9. Linux 安装 nginx 安装PCRE库

    PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库.这些在执行正规表达式模式匹配时用与Perl 5同样的语法和语义是 ...

  10. STM32Cube IDE配置串口发送与接收

    此项目源码下载地址:https://github.com/lizhiqiang0204/STM32CubeIDE_Uart 串口与中断配置如下 在生成的main函数中,添加开启串口接收中断 HAL_I ...