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常见的算法总结,希望本文能够给大家带来帮助。