检索算法

作者: 神秘者007 | 来源:发表于2018-04-19 16:40 被阅读33次
image.png
image.png
image.png

顺序查找

 //  顺序查找
    function seqSearch(arr,data) {
        for(var i=0;i<arr.length;i++){
            if(arr[i]==data){
                return i+1;
            }
        }
        return -1; //  找不到
    }

    //  查找最大值
    function findMax() {
        var max = arr[0];
        for(var i=0;i<arr.length;i++){
            if(arr[i]>max){
                max = arr[i]
            }
        }
        return max;
    }

    //  查找最小值
    function findMix() {
        var min = arr[0];
        for(var i=0;i<arr.length;i++){
            if(arr[i]<min){
                min = arr[i]
            }
        }
        return min;
    }

    var arr = [23,100,56,78,32];
    console.log('查找78元素的位置在',seqSearch(arr,78));
    console.log('查找最大值',findMax());
    console.log('查找最小值',findMix());

自组织数据查找方法

 //  自组织数据查找方法--二八原则
    function seqSearch1(arr,data) {
        for(var i=0;i<arr.length;i++){
   //  只对距离数据集起始为这事一定方位外元素进行交换
            if(arr[i]==data&&i>(arr.length*0.2)){
                swap(arr,i,i-1);
                return true;
            }
        }
        return -1;//  查找不到
    }

    var arr = [23,100,56,78,32];
    seqSearch1(arr,56)
    seqSearch1(arr,56)
    seqSearch1(arr,56)
    seqSearch1(arr,32)
    seqSearch1(arr,32)
    console.log(arr)// arr结果为:[23, 56, 32, 100, 78]

二分查找方法 前提是要对数组进行排好序

//  二分查找法  前提是要对数组进行排序
    function binSearch(arr, data) {
        var upperBound = arr.length-1;  //  上边界
        var lowerBound = 0;  //  下边界
        while(lowerBound<=upperBound){
            var mid = Math.floor((upperBound+lowerBound)/2);
            if(arr[mid]<data){
                //  data小于中间值
                lowerBound = mid+1;
            }else if(arr[mid]>data){
                //  data大于中间值
                upperBound = mid-1;
            }else{
                //  data等于中间值
                return mid+1;
            }
        }
        return -1;  //  查找不到
    }

    var arr = [23,32,56,78,100];
    var result = binSearch(arr,56);
    console.log('查找56的位置在:',result)

相关文章

  • 检索算法

    顺序查找 自组织数据查找方法 二分查找方法 前提是要对数组进行排好序

  • 图像检索简介

    什么是图像检索算法? 图像检索是从图片检索数据库中检索出满足条件的图片,图片检索技术的研究根据描述图像内容方式的不...

  • Lucene 的存储结构概述

    lucene的检索算法属于索引检索,即用空间来换取时间,对需要检索的文件、字符流进行全文索引,在检索的时候对索引进...

  • 排序算法和检索算法

    排序算法 1.基本排序算法 基本排序算法,其核心思想是指对一组数组按照一定的顺序重新排列。重新排列时用到的技术是一...

  • 数据结构+算法

    排序算法 基本排序:冒泡、选择、插入 高级排序希尔、归并、快速 检索算法 顺序查找、二分查找 高级算法 动态规划斐...

  • 死磕一周算法,我让服务性能提高50%

    我最近一直在公司做检索性能优化。当我看到这个算法之前,我也不认为我负责的检索系统性能还有改进的余地。但是这个算法确...

  • JavaScript检索算法/查找算法总结

    一、顺序查找(线性查找) 从列表的第一个元素开始对列表元素逐个进行判断,直到找到了想要的结果,或者直到列表结尾也没...

  • 第二章 C++ STL 泛型编程 2

    一、set集合容器 衡二叉检索树的检索使用中序遍历算法,效率高于vector、deque、list等容器,mult...

  • #论文笔记# Demystifying Core Ranking

    本文是 Pinterest 试验的图片检索算法,本文从:training data,user/image feat...

  • 哈希算法

    哈希(英语:Hashing)是计算机科学中一种对数据的处理方法,通过某种特定的函数/算法将要检索的项与用来检索的索...

网友评论

    本文标题:检索算法

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