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

二分查找 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 -…
刚刚完成师兄给的一道题目: 随机生成10000位数,进行快速排序后,用二分查找法定位到某个要查询的数(键盘输入某个要查询的数),  结果输出查询的时间,以及是否查到 分享下自己的解题思路: 1,要懂得如何随机生成数 2,要了解快速排序以及二分法思想 3,要直到如何测试出程序运行时间 下面是自己写的代码,欢迎各位提出宝贵的意见以及见解,小生感激不尽 1 /* 2 本代码描述: 3 4 随机生成10000位数,进行快速排序后, 5 用二分查找法定位到某个要查询的数 6 (键盘输入某个要查询的数),…
import java.util.Arrays; public class Main { public static void main(String[] args) { int[] data = {2, 3, 5, 1, 4, 5, 2, 13, 51, 9, 10, 15, 17, 6, 21, 33, 44, 77, 22}; System.out.println(Arrays.toString(data)); quickSort(data, 0, data.length - 1); Sy…
var data = [8, 3, 4, 1, 18, 22, 11, 3, 5, 6, 2, 1, 77] quickSort(data, 0, data.length - 1) console.log(data) var index = binarySearch(data, 18);console.log(index) function quickSort(data, left, right) { if(data.length < 2) { return; } var index = par…
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…
1. 二分查找法: 二分查找法是对一组有序的数字中进行查找,传递相应的数据,进行比较查找到与原数据相同的数据,查找到了返回对应的数组下标,没有找到返回-1. 二分查找法要求数据为一组有序的序列(大到小或小到大),但实际给出的数据往往是无序的,这是就需要先进行排序:排序算法有很多,但最有效.快速的当属快速排序算法. 2. 快速排序算法 1). 思想 快速排序采用的思想是分治思想. 找出一个元素(理论上元素随意)作为基准(pivot): 对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边…
1.快速排序  参考自: https://www.cnblogs.com/yundan/p/4022056.html namespace 快速排序算法 { class Program { static void Main(string[] args) { Console.WriteLine("请输入待排序数列以 , 分割"); string _s = Console.ReadLine(); string[] _sArray = _s.Split(",".ToChar…
知识扩充: 时间复杂度:算法的时间复杂度是一个函数,描述了算法的运行时间.时间复杂度越低,效率越高. 自我理解:一个算法,运行了几次时间复杂度就为多少,如运行了n次,则时间复杂度为O(n). 1.冒泡排序 解析:1.比较相邻的两个元素,如果前一个比后一个大,则交换位置. 2.第一轮的时候最后一个元素应该是最大的一个. 3.按照步骤一的方法进行相邻两个元素的比较,这个时候由于最后一个元素已经是最大的了,所以最后一个元素不用比较. function sort(elements){ for(var i…
二维数组由行和列组成.由arr[$i][$j]表示,先后表示行和列,类似于坐标点. 打印二维数组-----通过两次遍历,第一次遍历每一行,第二次遍历每一行的具体元素,并且通过使用count($arr[$i])---代表每一行有几个元素,使代码适应性更好,可以打印不规则的二维数组. 转置矩阵-----颠倒行和列的值,然后再次遍历即可. <?php //1.打印一个二维数组 $arr=array( array(1,2,3,4,5,6), array(2,2,3,1,2,5), array(0,9,8…
1.快速排序: 思路:找到数组中间的元素,把它单拎出来,然后从0开始判断数组中的元素比该基准元素大还是小,小的存左边,大的存右边,然后如此反复递归,得出结果. function quickSort(arr) { if (arr.length <= 1) { return arr; }//如果输入数组长度小于等于1,直接返回数组.这也是递归算法的终结部分 var base = Math.floor(arr.length / 2);//找到中间的基准元素位置 var baseEle = arr.sp…