顺序查找:

public static int orderSearch(int[] nums,int k){for(int i = 0;i<nums.length;i++){if(nums[i]==k){return i;}}return -1;
}

//不难发现,顺序查找的时间复杂度为O(n)

二分查找(折半查找):

//二分查找的前提是有序

public static int binSearch(int[] nums,int k){int i = 0;int j = nums.length-1;int mid;while(i<=j){mid = i+((j-i)>>1);//防止溢出,移位效率更高if(nums[mid]==k){return mid;}else if(nums[mid]<k){i = mid + 1;}else{j = mid - 1;}}return -1;
}
  • 第1次 剩余的数为n/2
  • 第2次 剩余的数为n/4
  • 第3次 剩余的数为n/8
  • ....以此类推
  • 第k次 剩余的数为n/(最后剩余的数应该是1)
  • 所以n/=1
  • n = 
  • 所以时间复杂度为O(logn)

顺序查找与二分查找的性能比较

  • 从时间复杂度上来看顺序查找的时间复杂度为O(n),也就是说面对的数据顺序查找所需要耗费的时间为1s
  • 二分查找的时间复杂度为O(),面对的数据所需要耗费的时间为 s
  • 很明显二分查找所耗费的时间比顺序查找少了很多很多
  • 用程序跑出来也是差不多的结果
package 第二章;import java.util.Scanner;public class Main {public static int orderSearch(int[] nums,int k){for(int i = 0;i<nums.length;i++){if(nums[i]==k){return i;}}return -1;}public static int binSearch(int[] nums,int k){int i = 0;int j = nums.length-1;int mid;while(i<=j){mid = i+((j-i)>>1);//防止溢出,移位效率更高if(nums[mid]==k){return mid;}else if(nums[mid]<k){i = mid + 1;}else{j = mid - 1;}}return -1;}public static void main(String[] args) {Scanner in = new Scanner(System.in);System.out.print("请输入你要查找的数: ");int k = in.nextInt();int[] nums = new int[100000000];for (int i = 0; i < nums.length; i++) {nums[i] = i+1;}int indexOf = -1;long beginTime = System.currentTimeMillis();indexOf = orderSearch(nums, k);long endTime = System.currentTimeMillis();System.out.println("顺序查找所耗费的时间为: "+(endTime-beginTime)+"ms,该数在数组中的索引为: "+indexOf);beginTime = System.currentTimeMillis();indexOf = binSearch(nums, k);endTime = System.currentTimeMillis();System.out.println("二分查找所耗费的时间为: "+(endTime-beginTime)+"ms,该数在数组中的索引为: "+indexOf);}
}

跑出来的结果是:

可见顺序查找的所耗费的时间为二分查找的很多倍了

2.11 性能对比:顺序查找与二分查找相关推荐

  1. 【Java数据结构与算法】第九章 顺序查找、二分查找、插值查找和斐波那契查找

    第九章 顺序查找.二分查找.插值查找和斐波那契查找 文章目录 第九章 顺序查找.二分查找.插值查找和斐波那契查找 一.顺序查找 1.基本介绍 2.代码实现 二.二分查找 1.基本介绍 2.代码实现 三 ...

  2. 查找算法--01 顺序查找和二分查找

    目      录 1. 顺序查找 1.1 顺序查找介绍 1.2 顺序查找适用范围 1.3 顺序查找代码实现 2.二分查找 2.1 二分查找介绍 2.2 二分查找适用范围 2.3 二分查找代码实现 2. ...

  3. 顺序查找与二分查找算法

    顺序查找算法 顺序查找是非常简单常用的查找算法,基本思路:从第一个元素m开始逐个与需要查找的元素x进行比较,当比较到元素值相同(即m=x)时返回元素m的下标,如果比较到最后都没有找到,则返回-1.该算 ...

  4. 查找:顺序查找、二分查找、分块查找

    一.顺序查找 按索引顺序查找,可用于查找无序序列 int SequenceSearch(vector<int> seq, int key) {const int c_len = seq.s ...

  5. 【Java】 查找数组中指定元素之 顺序查找 与 二分查找

    今天博主分享两个查找数组中指定元素的算法:顺序查找与二分查找 小小目录 1.顺序查找 2. 二分查找 1.顺序查找 给定一个数组, 再给定一个元素, 找出该元素在数组中的位置. 代码如下: //顺序查 ...

  6. 动态数组,数组初始化,数组内存释放,向数组中添加一个元素,向数组中添加多个元素,数组打印,顺序查找,二分查找,查找数组并返回地址,冒泡排序,改变数组中某个元素的值,删除一个数值,删除所有,查找含有

     1定义接口: Num.h #ifndef_NUM_H_ #define_NUM_H_ #include<stdio.h> #include<stdlib.h> /**** ...

  7. 数据结构---顺序查找和二分查找

    数据结构-顺序查找和二分查找 原理:参考趣学数据结构 代码: #include<stdio.h> #include<stdlib.h> int n;//查找元素数组的长度 vo ...

  8. 【Golang第6章:排序和查找】golang怎么排序,golang的顺序查找和二分查找,go语言中顺序查找二分查找介绍和案例

    介绍 这个是在B站上看边看视频边做的笔记,这一章是GO语言的排序和查找 有golang怎么排序,golang的顺序查找和二分查找,go语言中顺序查找二分查找介绍和案例,具体请看[文章目录] 配套视频自 ...

  9. Java有序表查找:折半查找、二分查找、差值查找和斐波那契查找

    Java有序表查找:折半查找.二分查找.差值查找和斐波那契查找     [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/51 ...

最新文章

  1. 生成一定范围的随机数
  2. kinana 清空索引数据_(Elasticsearch)实战Elasticseartch、Logstash、Kibana
  3. HTTPS加密越来越流行,为何要加密?
  4. Git学习笔记------整理自廖雪峰官网教程
  5. 每周一书《Spark与Hadoop大数据分析》分享!
  6. date javascript 时区_第23节 Datejs 日期库-Web前端开发之Javascript-零点程序员-王唯
  7. linux通过spi和stm32通信,双STM32通过SPI进行通信
  8. list c++template
  9. Jenkins持续发布解决方案
  10. 矢量图形和位图的不同
  11. springboot整合jpa之Specification
  12. python3抓取-双色球开奖的所有历史数据-2003年始
  13. ios审核要注意的地方(转)
  14. 插入馈电的微带贴片天线
  15. 目前最值得入手的蓝牙耳机有哪些?四款高性价比蓝牙耳机推荐
  16. texstudio暗色主题2.0
  17. 用signalr实现简单的网页实时聊天
  18. hadoop所有版本的下载地址
  19. 应用代码解决小学鸡兔同笼问题。(已知鸡和兔的总数量为n,总脚数为m。输入n和m,依次输出鸡和兔的数目。如果无解,则输出“no answer”。)
  20. 【嵌入式Linux驱动入门】二、上手Hello驱动,了解驱动开发流程

热门文章

  1. python 输出彩色字体代码,python实现控制台输出彩色字体
  2. 在一行上输入若干整数,每个整数以一个空格分开,求这些整数的平均值
  3. set echo on/off,set term on/off,set feedback off,set heading off命令
  4. 【源码】ThingSpeak支撑工具箱:与物联网数据平台交互的工具
  5. Python:SSH连接及FTP文件传输
  6. Node-05Nunjucks模板引擎
  7. 宝塔给WordPress网站搬家
  8. flask-redis使用总结
  9. 抖音风格故障效果PSD图层+剪辑设计必备
  10. 机器人车间气管_探访东莞智能车间:像管“人”一样管“机器”