本文给出了一个基于JavaScript的顺序搜索算法的实例。分享给大家参考,如下:
对于查找数据,最简单的方法是从列表的第一个元素开始逐个判断列表元素,直到找到想要的结果。这种方法称为顺序搜索,有时也称为线性搜索。这是一种暴力搜索技术。
顺序搜索实现起来非常简单,代码如下:
函数generalsearch (arr,data){//普通的顺序搜索是遍历一次,看看for(var I=0;长度;I){ if(arr[I]==data){ return true;} }返回false}那么这样会不会效率低?对于未排序的数据集,当搜索到的数据位于数据集的开头时,搜索是最快和最成功的。通过将成功找到的元素放在数据集的开头,您可以确保在未来的操作中可以更快地找到这些元素。代码如下:
该函数更好地搜索(arr,data){//自组织搜索,并将搜索率高的依次向前移动(var I=0;长度;I){ if(arr[I]==数据){ if(i0){ swap(arr,I,I-1);//如果找到,用前一个值交换搜索到的值}返回true} }返回false}函数交换(arr,I,j){//交换位置temp=arr[I];arr[I]=arr[j];arr[j]=温度;}有没有更好的方法?在搜索世界中,有一个“80-20原则”,这意味着对一个数据集执行的80%的搜索操作是为了搜索20%的数据元素。因此,我们可以把底部80%找到的元素放在起始位置,而顶部20%不需要改变。代码如下:
函数bestsearch (arr,data){//更好的自组织搜索,将最后80%的搜索结果调整到第一名为(var I=0;长度;I) {if (arr [I]==datai (arr。length * 0.2)} {//如果是最后一次80%互换(arr,I,0);返回真;} else if(arr[I]==data){ return true;//前20%不会移动}}返回false}三次搜索的实验代码如下:
//test var nums=[3,1,4,6,2,9,8,0,5,7];//general search var bool=general search(nums,3);document . write(bool ' br ');//true var bool=GeneraL SEarch(nums,11);document . write(bool ' br ');//false//自组织查找showNums(nums);//3 1 4 6 2 9 8 0 5 7betterSearch(nums,2);showNums(nums);//3 1 4 2 6 9 8 0 5 7betterSearch(nums,2);showNums(nums);//3 1 2 4 6 9 8 0 5 7betterSearch(nums,2);showNums(nums);//3 2 1 4 6 9 8 0 5 7//文档的更好的自组织搜索. write('更好的自组织搜索br ');bestSearch(nums,5);showNums(nums);//5 2 1 4 6 9 8 0 3 7bestSearch(nums,2);showNums(nums);//5 2 1 4 6 9 8 0 3 7顺序搜索的完整代码:
!DOCTYPE html html head meta charset=' utf-8 ' title/title/head body script type=' text/JavaScript '函数常规搜索(arr,data){//普通的顺序查找,就是遍历一遍看是否找到for(var I=0;长度;I){ if(arr[I]==data){ return true;} }返回false}函数betterSearch(arr,data){//自组织查找,将查找率高的依次往前移for(var I=0;长度;I){ if(arr[I]==数据){ if(i0){ swap(arr,I,I-1);//如果找到则将查找的值和前一个值交换位置}返回真实} }返回false}函数交换(arr,I,j){//交换位置temp=arr[I];arr[I]=arr[j];arr[j]=温度;}函数bestSearch(arr,data){//更好的自组织查找,将排名后80%的查找结果调到第一位for(var I=0;长度;I){ if(arr[I]==datai(arr。长度* 0.2)){//如果是后80%互换(arr,I,0);返回真;} else if(arr[I]==data){ return true;//前20%就不移动了} }返回false}函数showNums(arr){ for(var I=0;长度;I){文档。写(arr[I]' ');}文档。write(' br ');} //进行试验var nums=[3,1,4,6,2,9,8,0,5,7];//普通查找var bool=generalSearch(nums,3);文件。write(bool ' br ');//true var bool=GeneraL SEarch(nums,11);文件。write(bool ' br ');//false /自组织查找showNums(nums);//3 1 4 6 2 9 8 0 5 7 betterSearch(nums,2);showNums(nums);//3 1 4 2 6 9 8 0 5 7 betterSearch(nums,2);showNums(nums);//3 1 2 4 6 9 8 0 5 7 betterSearch(nums,2);showNums(nums);//3 2 1 4 6 9 8 0 5 7 //更好的自组织查找document.write('更好的自组织查找br’);bestSearch(nums,5);showNums(nums);//5 2 1 4 6 9 8 0 3 7 bestSearch(nums,2);showNums(nums);//5 2 1 4 6 9 8 0 3 7/脚本/正文/html运行效果如下图:
更多关于Java脚本语言相关内容感兴趣的读者可查看本站专题: 《JavaScript数据结构与算法技巧总结》 、 《JavaScript数学运算用法总结》 、 《JavaScript排序算法总结》 、 《JavaScript遍历算法与技巧总结》 、 《JavaScript查找算法技巧总结》 及《JavaScript错误与调试技巧总结》
希望本文所述对大家Java脚本语言程序设计有所帮助。