javascript的冒泡排序
var arr=[5,0,-56,900,12]; //大的排序次数(arr.length-1) var flag=false; for(var i=0;i<=arr.length-1;i++){ for(var j=1;j<=arr.length-1-i;j++){ if(arr[j-1]>arr[j]){ var temp=arr[j]; arr[j]=arr[j-1]; arr[j-1]=temp; flag=true; } } if(flag){ flag=false; }else{ flag=true; } } document.writeln(arr);
查找
我们常用的查找有两种:
①顺序查找
②二分查找
二分查找有个前提:该数组是有序的,如果不是有序的数组,则不能使用二分查找。
代码:
//思路:找到数组的中间数,和你要查找的数(findVal)进行比较,如果 //midVal>findVal 则说明findVal在数组的左边,就把该数组二分了(就只在左边查找。) function binarySearch(arr,findVal,leftIndex,rightIndex){ //找到这个值 if(leftIndex>rightIndex){ //提示找不到 document.writeln("找不到"); return; } var midIndex=arr[Math.floor((leftIndex+rightIndex)/2)]; var midVal=arr[midIndex]; //比较 if(midVal>findVal){ //在左边找 binarySearch(arr,findVal,leftIndex,midIndex-1); }else if(midVal<findVal){ binarySearch(arr,findVal,midIndex+1,rightIndex); }else{ document.writeln("找到 下标为"+midIndex); return; } }
注意:在js中(1+2)/2=1.5,它不会自动截断。需要使用
Math.floor((1+2)/2)