搜索

作者: 阿呆酱的算法工程师之路 | 来源:发表于2017-09-28 14:50 被阅读5次

顺序搜索

顺序查找
: 在一个已知无序(或有序)的队列中找出与给定的关键字相同的数的具体位置。

其原理是让关键字与队列中的数从开始一个一个地往后逐个比较,知道找到与给定的关键字相同的数。

package inner.search;

public class SequentialSearch {
    private int[] array;
    public SequentialSearch(int[] array) {
        this.array = array;
    }

    public int search(int key) {
        for(int i = 0; i < array.length; i++) {
            if(array[i] == key){
                return i;
            }
        }
        return -1;
    }

    //优化,防止越界
    public int search2(int key) {
        if(key == array[0]) {
            return 0;
        }
        int temp = array[0];
        array[0] = key;
        int i = array.length - 1;
        while(array[i] != key) {
            i--;
        }
        array[0] = temp;
        if(i == 0) {
            return -1;
        }
        return i;
    }
}

二分查找

二分查找也叫折半查找。二分查找有两个要求:一个是数列有序,另一个是数列使用顺序存储结构(比如数组)。

二分查找的实现

package inner.search;

public class BinarySearch {
    private int[] array;
    public BinarySearch(int[] array) {
        this.array = array;
    }
    public int searchRecursion(int target) {
        if(array != null) {
            return searchRecursion(target, 0, array.length - 1);
        }
        return -1;
    }
    
    public int searchRecursion(int target, int start, int end) {
        if(start > end) {
            return -1;
        }
        int mid = start + (end - start) / 2;
        if(array[mid] == target) {
            return mid;
        } else if(target < array[mid]) {
            return searchRecursion(target, start, mid - 1);
        } else {
            return searchRecursion(target, mid + 1, end);
        }
    }
}

相关文章

  • 搜索+搜索+搜索

    鲜活的一天,从起床那刻开始! <感谢小能熊@陈华伟老师的知识管理课程,仅用于个人笔记学习> 引子 经典的东西值得反...

  • 搜索条搜索

    AppDelegate.m ViewController *theVc = [[ViewController al...

  • GridSearch

    不同搜索空间的比较图: 空间搜索 螺旋搜索 线性搜索 网格搜索 可以看到,在超参的搜索过程汇总,网格搜索和螺旋搜索...

  • 搜索功能 分类搜索

    ``` defindexifparams[:category].blank? @products = Prod...

  • 说“搜索”就搜索

    某天逛网易严选,想买条毛巾,直接在搜索区搜索毛巾 在结果中,下翻了许久,太多种类了,只想买纯棉毛巾,这时想搜索“纯...

  • 搜索最近搜索建议

    前言 本章内容为 Android开发者指南的 Framework Topics/Search/Adding Rec...

  • 排序与搜索:搜索

    搜索 搜索是在一个项目集合中找到一个特定项目的算法过程。搜索通常的答案是真的或假的,因为该项目是否存在。 搜索的几...

  • 【电商运营01】做不好淘宝SEO?怪不得没人买你的好货!

    一、淘宝搜索 1、按买家的搜索行为: (1)关键词搜索(2)类目搜索 2、按搜索框的搜索形式: (1)宝贝搜索(默...

  • 浙江省多媒体设计竞赛——网站类作品

    常用功能介绍 搜索:全文搜索、拼音搜索、各种搜索关键词检错、搜索自动补全(搜索提示)、详细的高级搜索等等【评委两年...

  • 搜索

    搜索是在一个项目集合中找到一个特定项目的算法过程。搜索通常的答案是真的或假的,因为该项目是否存在。 搜索的几种常见...

网友评论

      本文标题:搜索

      本文链接:https://www.haomeiwen.com/subject/apnmextx.html