`
blessdyb
  • 浏览: 236426 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

几个常用的检索排序算法的JavaScript实现

阅读更多

近期工作需要,开始复习相关的检索排序算法。对常用的几个算法,自行进行了JavaScript实现:

  • 顺序查找

     最朴素的查询

/**
@data  目标元素所在的数组
@target  目标查询元素
@return  目标查询元素所在的下标
*/
function sequenceSearch(data,target){
    var resultIndex=-1;
    for(var i=0;i<data.length;i++){
        if(target==data[i]){
             resultIndex=i;
             break;
        }
    }
    return resultIndex;
} 
  • 折半查找

     注意,适合有序数组中的查找

/**
@data  目标元素所在的数组
@target  目标查询元素
@return  目标查询元素所在的下标
*/
function halfSearch(data,target){
    var resultIndex=-1;
    //将有序数组分为两部分,使用start,middle与end
    var start=0,end=data.length,middle=-1;
    while(start<end){
        middle=Math.floor((start+end)/2);
        if(target>data[middle]){
            start=middle+1;
        }else if(target<data[middle]){
            end=middle-1;
        }else{
           resultIndex=middle;
           break;
        }
    }
    return resultIndex;
 } 
  •  顺序插入排序

    注意:核心是由前往后,在逐渐排好的前段部分逆向插入元素

/**
@data  目标排序数组
*/
function insertSort(data){
    for(var i=1;i<data.length;i++){
       var temp=data[i];
       if(data[i-1]>temp){
           //每次在已经排好序的部分进行插入
           for(var j=i-1;j>=0;j--){
                if(data[j]>temp){
                    //向后进行移位,以便当前目标元素可以插入
                    data[j+1]=data[j];
                    data[j]=temp;
                }
           }
       }
    }
 }
  •  冒泡排序

    注意:逐次将大数向后移,第i个元素需要比较n-i-1次,嵌套循环实现

/**
@data  目标排序数组
*/
 

function bubbleSort(data){
    for(var i=0;i<data.length;i++){
        //大数自动向数组大下标处移动
        for(var j=0;j<data.length-i;j++){
             if(data[j]>data[j+1]){
                 var temp=data[j+1];
                 data[j+1]=data[j];
                 data[j]=temp;
             }
        }
    }
 }
  •  快速排序

    注意,使用分段,结合递归

/**
@data  目标排序数组
@start  分段开始
@end   分段结束
 */
function quickSort(data,start,end){
    if(start<end){
         var i=quickSortPartation(data,start,end);
         //递归处理每一段
         quickSort(data,start,i-1);
         quickSort(data,i+1,end);
    }
} 

//进行一次快排
function quickSortPartation(data,start,end){
     //定义第一个元素为快排标志位
     var key=data[start];
     while(start<end){
        while(start<end  && data[end]>=key){
             end--;
        }
        //当小于标志位的元素向前置换
        if(start<end){
             data[start]=data[end];
             start++;
        }
        while(start<end && data[start]<key){
             start++;
        }
        if(start<end){
            data[end]=data[start];
            end--;
        }
     }
     data[start]=key;
     return start;
}
 
分享到:
评论
1 楼 lliiqiang 2014-05-05  
首先要有条件,算法只是提升系统而已。如果小范围变化基本可以尝试出错也无关紧要

相关推荐

    格检索排序代码.rar_douwc_prizeb67_排序检索_格检索排序代码

    动态表格检索排序的实现通常涉及以下几个关键步骤: 1. **数据加载**:首先,数据需要从服务器获取或存储在本地,可以是JSON格式或者其他适合的数据结构。这些数据会被转化为表格的行和列。 2. **表格渲染**:使用...

    首字母排序选择

    3. 排序算法:最常用的排序算法可能是冒泡排序、选择排序、插入排序,或者更高效的快速排序、归并排序等。对于大数据集,考虑性能,一般会选择时间复杂度较低的排序算法。在JavaScript中,`Array.prototype.sort()`...

    从 0 到 1 学习 JavaScript 数据结构与算法.zip

    在这个"从 0 到 1 学习 JavaScript 数据结构与算法"的压缩包中,我们可能会涵盖以下几个核心知识点: 1. **数组**:数组是最基础的数据结构,它允许存储一系列有序的元素,可以是任何类型。在JavaScript中,数组...

    google的检索样式

    实现这样的样式,我们需要关注以下几个关键点: 1. **界面设计**:Google的搜索页面以简洁著称,通常只有一个搜索框和一个搜索按钮。这种设计旨在减少干扰,让用户专注于输入查询。我们可以使用HTML和CSS来创建类似...

    人工智能-项目实践-信息检索-文献检索系统前端

    信息检索是这个系统的核心功能,涉及到文本处理、查询分析和排序算法等多个方面。 1. 文本预处理:包括分词、去除停用词、词干提取等步骤,以减少噪声并提高检索效率。 2. 查询分析:对用户输入的查询进行解析和...

    JavaScript中的冒泡排序法

    综上所述,JavaScript中的冒泡排序涉及的几个核心知识点包括:排序算法的基本原理、sort()方法的使用、手动编写冒泡排序逻辑、以及正则表达式在字符串操作中的应用。通过这些知识点的综合应用,我们可以实现对...

    基于Python的文献检索系统设计与实现.docx

    本研究旨在设计并实现一个基于Python的文献检索系统,以提升文献搜索的精确度和速度,帮助用户快速定位到所需文献,从而提高科研工作的效率。此外,该系统还引入了自动化测试,确保其稳定性和可靠性;采用数据爬取...

    人工智能-项目实践-信息检索-基于VGG16的图像检索系统,简单的以图搜图

    本文将深入探讨一个基于VGG16模型的信息检索系统,该系统专注于图像检索,尤其是实现“以图搜图”的功能。VGG16是一种深度学习模型,由英国牛津大学视觉几何组(Visual Geometry Group)开发,并在2014年的ImageNet...

    JavaScript数据结构与算法之检索算法实例分析【顺序查找、最大最小值、自组织查询】

    本文详细介绍了几种常见的检索算法:顺序查找、最大最小值查找和自组织查询,并通过实例展示了它们的实现方法和技巧。 一、顺序查找法(Sequential Search) 顺序查找是最基本的查找方法之一,它的原理是逐个比较...

    ASP_NET实现网页数据检索方法的探索

    这需要在后端逻辑中实现高效的分页算法和灵活的排序机制。 4. **二次检索能力**:系统应支持基于已检索结果的进一步搜索,即所谓的“二次检索”。这一特性对于精确查找特定信息非常有用,但在传统的ASP框架下很难...

    JavaScript拼音搜索引擎

    在JavaScript拼音搜索引擎的实现中,主要有以下几个关键知识点: 1. **拼音库**:为了进行拼音匹配,首先需要一个完整的汉字与拼音对应关系的库。这个库通常包含所有常用汉字的拼音,以便于将用户的输入拼音与...

    sorting-algorithms-visualizer:用于几个分类算法的可视化工具

    JavaScript作为Web开发的主力语言,负责实现排序算法的逻辑。在这个项目中,开发者可能使用了数组方法如`sort()`,或者自定义函数来实现各种排序算法。JavaScript的异步处理能力使得程序在执行复杂计算时不会阻塞...

    JavaScript实现Java中Map容器的方法

    在给出的代码示例中,通过构造函数functionMap创建了一个“Map”对象,并为该对象定义了几个方法来模拟Map的行为,分别是put(增加键值对)、size(获取Map容器大小)、get(根据key获取value)、remove(根据key...

    js代码-js 几个算法

    在"js代码-js 几个算法"这个主题中,我们将深入探讨JavaScript中的一些常见算法及其应用。 1. **排序算法** - 冒泡排序:通过重复遍历数组比较相邻元素并交换,直到没有任何一对数字需要交换,实现排序。 - 选择...

    ASP外观专利图像检索平台(源代码+论文).zip

    它会涵盖以下几个关键知识点: 1. **图像检索算法**:外观专利图像检索通常涉及到特征提取、匹配和相似度计算。可能采用了如SIFT(尺度不变特征转换)、SURF(加速稳健特征)或深度学习方法如CNN(卷积神经网络)来...

    queue_shujujiegou_

    这使得插入和删除操作相对数组来说更高效,因为它们只需要改变几个链接,而不是移动大量元素。 2. 普通链式队列:在`queue-on-linked-list.js`中,队列的头部是入队操作的发生位置,尾部是出队操作的发生位置。当...

    下拉列表中文首字母选择

    在实现这个功能时,通常会有以下几个关键步骤: 1. **拼音转换**:使用JavaScript或其他编程语言的库,将下拉列表中的每个选项文本转换为拼音。确保处理好多音字和特殊字符,如“的地得”等。 2. **首字母提取**:...

    电脑编程涉及的几个方面

    熟练掌握常见算法如冒泡排序、快速排序、二分查找等,能提高代码效率。数据结构则是存储和组织数据的方式,如数组、链表、栈、队列、树、图等,它们直接影响到算法的实现和性能。 接下来,软件工程原理是保证项目...

    JSP搜索引擎的研究与实现(源代码+论文+答辩PPT).zip

    项目论文通常会涵盖以下几个方面: - **背景与意义**:阐述搜索引擎在信息时代的重要性,以及JSP技术的应用场景。 - **技术选型与设计**:详细解释选择JSP的原因,以及系统的设计架构和主要模块。 - **实现过程**:...

Global site tag (gtag.js) - Google Analytics