关于javascript的一些基本函数(二分查找,排序等等)

<!DOCTYPE html>
<html>
  
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <head>
    <title>函数练习</title>
  </head>
  	
  <body>
   <pre>
	         写一些具有如下功能的函数: 
	         getMax(arr), sortArray(arr), 
	         searchElement(arr,val), binarySearch(arr,val)
	         reverseArray(arr) 数组内容反转
	 </pre>
    <script type="text/javascript" >
     /////////取最值/////////
    	function getMax(arr){
    		var max=0;
    		for(var x=1;x<arr.length;x++){
    			if(arr[x]>arr[max]){
    				max=x;
    			}
    		}
    		return arr[max];
    	}
    	var arr=[23,4,34,65,23,45,56,76,23];
    	//var maxValue=getmax(arr);javascript是大小写敏感的和java一样,而html和css以及sql语言都是不敏感的
    	var maxValue=getMax(arr);
    	alert("hahhah");
    	alert("maxValue:"+maxValue);
    </script>
    
    <script type="text/javascript" >
    	////////排序(快速排序)////////
    	function sortArray(arr){
    		for(var x=0;x<arr.length-1;x++ ){
    			for(var y=x+1;y<arr.length;y++){
    				if(arr[x]>arr[y]){
    				swap(arr,x,y);
    				}
    			}
    		}
    		return arr;
    	}
    	function swap(arr,x,y){
    		var temp=arr[x];
    		arr[x]=arr[y];
    		arr[y]=temp;
    	}
    	sortArray(arr);
    	alert("newArr:"+arr);

    ///////searchElement(arr,val)元素查找///////////
    function searchElement(arr,val){
    	for(var x=0;x<arr.length;x++){
    		if(arr[x]==val){
    		return x;//返回元素的位置
    		}
    	}
    	return -1;//未找到
    }
    document.write("value:"+searchElement(arr, 56)+"</br>");
    document.write("value:"+searchElement(arr, 0)+"</br>");
   ///////////二分查找///////////
	     function binarySearch(arr,key){
	    	 var right,left,mid;
	    	 left=0;
	    	 right=arr.length-1;
	    	 while(left<=right){ //bug: 必须要有"="号
	    		 mid = (left+right)>>1;
	    		 if(key>arr[mid]){//右半区
	    			 left=mid+1;
	    		 }else if(key<arr[mid]){//左半区
	    			 right=mid-1;
	    		 }else{//找到了
	    			 return mid;//6
	    		 }
	    	 }	 
	    	 return -1;//未找到
	     }
		 var a=binarySearch(arr, 56) ;
    	 document.write("value2:" +a +"</br>");
    	 
    	 
    	 function reverse(arr){
    	 	for(var start=0,end=arr.length-1;start<end;start++,end--){
    	 		swap(arr,start,end);
    	 	}
    	 
    	 }
    	  document.write("前:" +arr +"</br>");
    	  reverse(arr);
    	   document.write("后:" +arr);
    </script>
  </body>
</html>

猜你喜欢

转载自blog.csdn.net/e286878553/article/details/80738560