【Java数据结构】二分查找
2015-09-30 10:45
393 查看
最近都是在复习数据结构,所以这段时间就写一下查找,排序的算法吧。
先介绍一些二分查找,二分查找非常简单,是很基础的算法,在考试、面试中也都会经常出现。二分查找的前提条件是数组已经是顺序排序的,然后找出某个数所在的位置。二分查找也称为折半查找,所以这个算法就是不断的折半。首先是取数组中间那个数进行比较,如果比它大,就在这个数组的后半部分继续二分查找,如果比它小,就在数组的前面一部分继续二分查找,直到找到或者是全部查找之后结束。
下面我就直接贴代码了。
直接运行之后,根据提示输入相关的数据,运行结果如下:
Author:立礼
Sign:人生不要有太多的幻想,而要有更多的行动。
先介绍一些二分查找,二分查找非常简单,是很基础的算法,在考试、面试中也都会经常出现。二分查找的前提条件是数组已经是顺序排序的,然后找出某个数所在的位置。二分查找也称为折半查找,所以这个算法就是不断的折半。首先是取数组中间那个数进行比较,如果比它大,就在这个数组的后半部分继续二分查找,如果比它小,就在数组的前面一部分继续二分查找,直到找到或者是全部查找之后结束。
下面我就直接贴代码了。
import java.util.*; public class BinarySerch { public static int binarySerch(int[] array,int x){ int high,low,mid,flag=-1;//找不到返回-1 low=0; high=array.length-1; while(low<=high){ mid=(low+high)/2; if(array[mid]<x){ low=mid+1; }else if(array[mid]>x){ high=mid-1; }else{ flag=mid; break; } } return flag; } public static void main(String[] args){ Scanner reader=new Scanner(System.in); System.out.println("请输入顺序排列的数组:"); String str=reader.nextLine(); System.out.print("你要查找的数是:"); int look=reader.nextInt(); String[] num=str.split(" "); int[] array=new int[num.length]; for(int i=0;i<num.length;i++){ array[i]=Integer.parseInt(num[i]); } System.out.println(look+"所在的位置是"+binarySerch(array,look)); } }
直接运行之后,根据提示输入相关的数据,运行结果如下:
Author:立礼
Sign:人生不要有太多的幻想,而要有更多的行动。
相关文章推荐
- 数据结构和算法学习(5)-链表
- 数据结构之用邻接表实现树
- 数据结构之矩阵法实现图
- 数据结构之用子树表示法实现树的操作
- 数据结构之父指针实现树
- 用链表实现二叉树
- 数据结构之用顺序表实现二叉树
- 数据结构之队列的链表实现
- Power of Cryptography(二分+pow)
- Java数据结构与算法之数组排序——冒泡
- 数据结构实验之链表八:Farey序列
- 夕拾-数据结构-快速排序
- Android JNI 使用的数据结构JNINativeMethod详解
- 【ShancoLove】带你看数据结构——第二课:线性表顺序结构
- 数据结构学习:栈
- SDUT 1519 数据结构实验之链表八:Farey序列
- 活用各种数据结构——线段树篇
- c++实现数据结构4.双循环链表
- [数据结构]hash小题HD1496(hash开放寻址)
- c++实现数据结构3.双链表