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;i
PS:这里再为大家推荐一款关于排序的演示工具供大家参考:
在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:
http://tools.jb51.net/aideddesign/paixu_ys
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结》
希望本文所述对大家JavaScript程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。