查找算法之顺序查找和二分查找

  • 顺序查找

在查找算法中,估计顺序查找是最容易想到的,他的特点是用所给关键字与线性表中各个元素琢个比较,直到成功或者失败.

           

public int search(int[] args,int key){
      for(int i=0; i

          以上代码就是一个顺序查找算法, 很简单,缺点是:平均查找长度较大,如果当线性表长度很大时,效率就很低了;优点是:试用性很广,因为简单,所以很省事。


  • 二分查找
相比顺序查找,二分查找就相对局限了,查找表 必须是顺序的存储结构,其次,必须按关键字大小有序排列。

  基本思路:首先,先将查找表中间位置数据元素的关键字与给定关键字比较,如果相等则查找成功;否则利用中间元素把表一分为二(前一子表,后一子表),如果中间元素大于给定元素,则在前一子表中继续二分查找,如果中间元素小于给定元素,则给定元素继续跟后一子表二分查找。

    如查询表: int[]  args = {23,25,56,89,90,111,112,115,119,200,205};

    查询关键字:89

    第一步: 89 跟args[args.length/2] 比较,结论:取得前一子表  int b[] = {23,25,56,89,90}

    第二布:89 跟b[b.length/2]比较,结论:取得后一子表  int c[] = {89,90}

              第三步:89 跟c[c.length/2] 比较 ,结论:查找成功。

                

public int search(int args[],int key){
     int low=0;
     int len=args.length;
     while(low<=len){
           int min = (low+len)/2;
           if(args[min]==key)
                  return min;
           else if(args[i]>key)
                  len = min - 1;
           else
                 low= min + 1;
     }

}

    看到这里是否有想到也可以用递归去实现呢,自己去动手写写吧。


你可能感兴趣的:(java)