JavaScrip常见的一些算法总结
下面就简单列举一下javascript中常见的一些算法,需要的朋友可以做一下参考。当然这些算法不仅仅适用于javascript,同样也适用于其他语言。
一.线性查找:
比较简单,属于入门级的算法
//A为数组,x为要搜索的值
functionlinearSearch(A,x){
for(varindex=0;index<A.length;index++){
if(A[index]==x){
returnindex;
}
}
return-1;
}
二.二分查找:
又称折半查找,适用于已排好序的线性结构。
//A为已按"升序排列"的数组,x为要查询的元素
//返回目标元素的下标
functionbinarySearch(A,x){
varlow=0,high=A.length-1;
while(low<=high){
varmid=Math.floor((low+high)/2);//下取整
if(x==A[mid]){
returnmid;
}
if(x<A[mid]){
high=mid-1;
}
else{
low=mid+1;
}
}
return-1;
}
三.冒泡排序:
//冒泡排序
functionbubbleSort(A){
for(vari=0;i<A.length;i++){
varsorted=true;
//注意:内循环是倒着来的
for(varj=A.length-1;j>i;j--){
if(A[j]<A[j-1]){
swap(A,j,j-1);
sorted=false;
}
}
if(sorted){
return;
}
}
}
四.插入排序:
//插入排序
//假定当前元素之前的元素已经排好序,先把自己的位置空出来,
//然后前面比自己大的元素依次向后移,直到空出一个"坑",
//然后把目标元素插入"坑"中
functioninsertSort(A){
for(varindex=1;index<A.length;index++){
varx=A[index];
for(varj=index-1;j>=0&&A[j]>x;j--){
A[j+1]=A[j];
}
if(A[j+1]!=x){
A[j+1]=x;
println(A);
}
}
returnA;
}
五.字符串反转:
//字符串反转(比如:ABC->CBA)
functioninverse(s){
vararr=s.split('');
varindex=0,j=arr.length-1;
while(index<j){
vart=arr[index];
arr[index]=arr[j];
arr[j]=t;
index++;
j--;
}
returnarr.join('');
}
以上内容给大家简单介绍了JavaScrip常见的算法总结,希望本文能够给大家带来帮助。