javascript中数组、函数的小练习

 

 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
	//封装的打印函数
	function sop(data) {
		document.write("<br/>");
		document.write(data);
		document.write("<br/>");
	}

	//封装打印数组的函数
	function sopArray(arr) {
		for ( var i = 0; i < arr.length; i++) {
			document.write("<br/>");
			document.write("arr[" + i + "]=" + arr[i]);
			document.write("<br/>");
		}
	}

	//=========================================//

	//获取数组的最值 
	function getMax(arr) {
		var maxValIndex = 0;
		for ( var index = 1; index < arr.length; index++) {
			if (arr[index] > arr[maxValIndex]) {
				maxValIndex = index;
			}
		}
		return arr[maxValIndex];
	}

	var arr = [ -1, 2, 5, 1 ];
	var maxVal = getMax(arr);
	sop("maxVal=" + maxVal);
	
	//=========================================//
	
	//选择排序
	function selectSort(arr) {
		for ( var i = 0; i < arr.length - 1; i++) {
			for ( var j = i + 1; j < arr.length; j++) {
				if (arr[i] > arr[j])
					swap(arr, i, j);
			}
		}
		return arr;
	}
	
	//数组元素交换为位置 
	function swap(arr, i, j) {
		arr[i] = arr[i] ^ arr[j];
		arr[j] = arr[i] ^ arr[j];
		arr[i] = arr[i] ^ arr[j];
	}

	var arrAfterSelectSort = selectSort(arr);
	sopArray(arrAfterSelectSort);
	
	//=========================================//
	
	//查找数组中的元素---使用 2分查找的前提:数组有序  
	function binarySearch(arr,key) {
		var min,mid,max;
		min = 0;
		max = arr.length-1;
		
		while(min<=max) {
			mid = (min + max)>>1;
			if(arr[mid]>key) 
				max = mid - 1;
			else if(arr[mid]<key)
				min = mid + 1;
			else
				return mid;
		}
		return -1;
	}
	
	var arr = [-1,2,2,3,4,5,6];
	var key = 2;
	var index = binarySearch(arr,key);
	sop(key+"在数组arr中的角标 "+index);
	
	//=========================================//
	
	//数组反转 
	//前一个与最后一个交换位置,依此类推 。。。 
	function reverseArray(arr) {
		for(var start=0,end=arr.length-1;start<end;start++,end--) {
			swap(arr,start,end);
		}
	}
	var arr = [1,2,3,4,5,6];
	reverseArray(arr);
	sopArray(arr);
	
	
</script>
</head>
<body>

</body>
</html>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值