码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构之查找

时间:2019-03-23 10:32:34      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:二分   查询   ring   class   ima   目标   结果   flag   技术   

本次主要包含内存中的查找有:顺序查找,折半查找,分块查找,二叉排序树查找,哈希表查找

1)顺序查找:是最简单的查找方式,如,a= {45,53,12,3,37,24,90,100,61,78};进行排序,java程序实现如下所示:

package com.three.five;

public class SearchSX {

    public static void main(String[] args) {
         
        int [] a= {45,53,12,3,37,24,90,100,61,78};//定义数组
        int des=90;//需要查找的目标数字
        boolean flag=false;
        for(int i=0;i<a.length;i++) {
            if(des==a[i]) {
                System.out.println("找到目标数字:"+des+",在数组中的第 "+(i+1)+" 个位置");
                flag=true;
                break;
            } 
        }
        if(!flag) {
        System.out.println("定义的数组中没有目标数字");
        }
    }
}

以上代码运行结果为:

技术图片

是按照顺序一个一个进行比较查询,最快是第一次比较匹配,最慢是最后一个比较匹配,算法的时间复杂度是O(n),

 

2.折半查找,也叫二分查找,需要时有序存放,查找起来会快很多,如给定的数组是(3,6,12,23,30,43,56,64,78,85,98),要查找的数据是30,方法参数可以随自己换。

则使用折半查找的程序如下所示:

package com.class02;

/**
 * 折半查找:前提是有序的,每次都是以中间顺序为比较基数,可以提高查询效率
 * @Date: 2019/3/23 9:30
 * @Version: 1.0
 */
public class QuickSort {

    static int []a={3,6,12,23,30,43,56,64,78,85,98};

    public static int paritation(int []a,int key){
        int low=0;
        int high=a.length-1;
        int mid;
        while(low<=high){
            mid=(low+high)/2;
            System.out.println("比较数据为;"+a[mid]);
            if(a[mid]==key)return mid;
             else
                 if(a[mid]<key)low=mid+1;
                 else high=mid-1;
        }
        return -1;
    }

    public static void main(String []args){
         int tim=QuickSort.paritation(QuickSort.a,30);
         System.out.print("最终比较"+tim+" 次得出结果:");
    }
}

运行结果为:

技术图片

 

数据结构之查找

标签:二分   查询   ring   class   ima   目标   结果   flag   技术   

原文地址:https://www.cnblogs.com/guopengxia0719/p/10477408.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!