关于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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值