JS实现常见的查找、排序、去重算法示例
本文实例讲述了JS实现常见的查找、排序、去重算法。分享给大家供大家参考,具体如下:
今天总结了下排序简单的算法
【自定义排序】
先寻找一个最小的数,然后依次那这个数和数组中其他数字比较,如果发现比这个数字小的数就把这两个数调换位置,然后再继续寻找下一个最小的数字进行下一轮比较
vararr=[31,6,19,8,2,3]; functionfindMin(start,arr){ variMin=arr[start]; variMinIndex=start; for(vari=start+1;i【线性查找】:一个一个去查找
//不重复有序 vararr=[0]; for(vari=1;i<100000;i++){ arr[i]=arr[i-1]+Math.floor(Math.random()*4+1); } functionfind1(n,arr){ for(vari=0;i【二分查找】:不停的分成两个部分,分部分查找
是一种万能方法,不一定是最好的,但是个保底的方法。(分治法)
***中间值相加除以二,统一偏左,向下取整
//不重复有序 vararr=[12,17,23,34,45,76,89]; functionfind2(n,s,e){ //边界处理 if(s>e){ returnfalse; }elseif(s==e){ if(arr[s]==n){ returntrue; }else{ returnfalse; } } varc=Math.floor((s+e)/2); if(arr[c]==n){ returntrue; }else{ if(n【边界处理】-----递归,一层一层往下找
//要求数组不重复有顺序\ vararr=[12,23,34,45,56,67,78] functionfind2(n,s,e){ if(s>e){ returnfasle; }elseif(s==e){ if(arr[s]==e){ returntrue; }else{ returnfalse; } } varc=Math.floor((s+e)/2); if(arr[c]==n){ returntrue; }else{ if(n应用
【查找最小值】
vararr=[12,54,32,9,5,3,1,101,-100,-1000]; functionfindMin(s,e){ if(s>e){ return[]; }elseif(s==e){ returnarr[s]; }elseif(s==e-1){ if(arr[s]【数组去重】
vararr=[1,2,3,4,5,4,3,4,5,2,1,4,2,1,5,7]; functionfindInArr(n,arr){ for(vari=0;ie){ return[]; }elseif(s==e){ return[arr[s]]; }elseif(s==e-1){ if(arr[s]==arr[e]){ return[arr[s]]; }else{ return[arr[s],arr[e]] } } varc=Math.floor((s+e)/2); varl=removeCopy(s,c); varr=removeCopy(c+1,e); for(vari=0;i 【数组排序】
vararr=[34,32,1,76,55,-100,99,101]; functionmySort(s,e){ //边界处理 if(s>e){ return[]; }elseif(s==e){ return[arr[s]] }elseif(s==e-1){ if(arr[s]0||r.length>0){ if(l[0] 冒泡排序BubbleSort
循环,每次拿出两个值,两两比较,如果下一个值比目前的小,那么交换位置
外层循环是循环取数,内层循环是两两交换比较
vararr=[-122,-2,5,6,73,34,5,2]; functionBubbleSort(arr){ for(vari=0;iarr[j+1]){ vartmp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=tmp } } } returnarr; } document.write(BubbleSort(arr)); 【快速排序】-------quickSort
取数组中间的数,比中间数小的房中间数左边,比中间数大的放右边,再把两遍链接起来
functionquickSort(arr,s,e){ //边界处理参与流程 if(arr.length==0){ return[]; } varc=Math.floor((s+e)/2); vararrC=arr.splice(c,1); varl=[]; varr=[]; for(vari=0;i【散列】hash哈希数组------js常用用的结构
添加
vararr=[]; arr.length=0; varcont=0; functionhash_add(n){ varpos=n%arr.length; //当空间不足的时候 if(arr[pos]){ while(arr[pos]){ cont++; if(arr[pos]==n){ return; }else{ pos++; if(pos==arr.length){ pos=0; } } } arr[pos]=n; }else{ arr[pos]=n; } //空间不足的时候的扩建 if(cont==arr.length){ //d等呗扩建 varoldArr=arr; arr.length=oldArr.length*2; arr=[]; for(vari=0;iPS:这里再为大家推荐一款关于排序的演示工具供大家参考:
在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:
http://tools.jb51.net/aideddesign/paixu_ys更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结》
希望本文所述对大家JavaScript程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。