1. var data = [8, 3, 4, 1, 18, 22, 11, 3, 5, 6, 2, 1, 77]
  2.  
  3. quickSort(data, 0, data.length - 1)
  4.  
  5. console.log(data)
  6.  
  7. var index = binarySearch(data, 18);
    console.log(index)
  8.  
  9. function quickSort(data, left, right) {
  10.  
  11. if(data.length < 2)
    {
    return;
    }
    var index = partition(data, left, right);
  12.  
  13. if (left < index - 1) {
    quickSort(data, left, index - 1);
    }
  14.  
  15. if (right > index) {
    quickSort(data, index, right);
    }
  16.  
  17. }
  18.  
  19. function partition(data, left, right) {
  20.  
  21. var i = left;
    var j = right;
  22.  
  23. var pivot = data[Math.floor(left + (right - left) / 2)];
  24.  
  25. while (i <= j) {
  26.  
  27. while (data[j] > pivot) {
    j--;
    }
  28.  
  29. while (data[i] < pivot) {
    i++;
    }
  30.  
  31. if (i <= j) {
    var temp = data[i];
    data[i] = data[j];
    data[j] = temp;
    i++;
    j--;
    }
  32.  
  33. }
  34.  
  35. return i;
    }
  36.  
  37. function binarySearch(data, target) {
  38.  
  39. var left = 0;
    var right = data.length - 1;
  40.  
  41. while(left <= right)
    {
    var midIndex = Math.floor(left + (right - left) / 2);
  42.  
  43. if(data[midIndex] < target)
    {
    left = midIndex + 1;
    }
  44.  
  45. if(data[midIndex] >= target)
    {
    right = midIndex - 1;
    }
    }
  46.  
  47. return left;
  48.  
  49. }

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

  1. binarySearch二分查找——Javascript实现

    在很早之前,我就写过了一篇也关于二分法的相关博文:JavaScript快排与原生sort的测试.当时是用二分法进行快速排序,其实和这次思路大致相当.二分查找最重要的一个条件,就是需要将数组先按照从小到 ...

  2. 二分查找javascript

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

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

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

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

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

  5. 浅谈二分查找 JavaScript

    算法介绍 二分查找,也称折半查找,是一种在有序数组中查找特定元素的搜索算法.查找过程经历一下步骤: (1)从有序数组的中间的元素开始搜索,如果该元素正好是目标元素,则停止搜索并返回该元素的索引值,否则 ...

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

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

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

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

  8. javascript实现二分查找

    今天做了道笔试题,要求是实现二分查找,当然不难,想了一下,因为没有要求语言就用javascript实现了.当然,期间还是出来了一点问题. ok,上代码 /* * 稳定二分查找 * 作者:吴伟欣 * * ...

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

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

随机推荐

  1. vim编辑Dockerfile时语法高亮

    参考Dockerfile构建容器---语法高亮 三个文件扔进相关的目录即可 1. /usr/share/vim/vimfiles/doc/dockerfile.txt *dockerfile.txt* ...

  2. “laravel.log” could not be opened: failed to open stream

    百度了一下,说是要赋权限,按照操作赋了权限也还是报错,其实只要执行第一个就好,但为了保险起见,我都执行了,还是不行 chmod -R /storage chmod -R /storage/logs c ...

  3. python中几个常见的魔法方法

    首先,什么是魔法方法呢?在python中方法名如果是__xxxx__()的,那么就有特殊的功能,因此叫做"魔法"方法. __ init__()方法 当一个实例被创建的时候调用的初始 ...

  4. Java编程思想读书笔记 第一章 对象导论

    抽象过程 纯粹的面向对象程序设计方式: 万物皆为对象: 对象可以存储数据,还可以在其自身执行操作 程序是对象的集合: 通过发送消息告诉彼此要做的 每个对象都有自己的由其它对象构成的存储:可以在程序中构 ...

  5. linux:文件/目录权限设置

    一.权限修改命令:     chmod [OPTION]... MODE[,MODE]... FILE...二.文件/目录MODE指定方式: 1).八进制(r=4,w=2,x=1) [root@pin ...

  6. 最大熵与EM算法

    一.熵.联合熵(相当于并集).条件熵.互信息 1.熵是什么? (0)信息量:信息的度量p(xi).信息量和概率成反比,熵是信息量的期望. X是一个随机变量,可能取值有很多个.熵是信息量的期望.熵反应的 ...

  7. pycharm解释器链接如何pymongo

    1.pymongo 链接数据库 # pycharm 链接我们的mogodb # 下载pymongo from pymongo import MongoClient # 客户端请求 服务端 # 链接 c ...

  8. 3U VPX 加固智能计算异构服务器

    3U VPX 加固智能计算异构服务器 北京太速科技有限公司在线客服:QQ:448468544 公司网站:www.orihard.com联系电话:15084122580

  9. zabbix 数据库问题

    Too many connections ::052844.247 Cannot connect to the database. Exiting... :: started [trapper #] ...

  10. 004-SaltStack入门篇之数据系统Grains、Pillar

    1.什么是Grains? Grains是saltstack的组件,用于收集salt-minion在启动时候的信息,又称为静态信息.可以理解为Grains记录着每台Minion的一些常用属性,比如CPU ...