JavaScript排序算法——归并排序

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>归并排序</title>
<!--<link rel="stylesheet" type="text/css" href="../style/fdt.css" />-->
<script type="text/javascript" src="../js/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="../js/jquery.easydrag.handler.beta2.js"></script>
<script type="text/javascript">

	$(document).ready(
		function() { 
			
			var array_1 = [9,8,7,6,5,4,3,2,1];
			alert(array_1);
			/*mergeSort*/
			//迭代实现
		    alert(mergeSort(array_1));

		}
	); 



</script>

<style type="text/css">
	
	* { padding:0; margin:0; }

	body {
		padding: 100px;
		font-size: 15px; 
	}

	


</style>


<script type="text/javascript">
	function merge(left,right){    
		var result=[];    
		while(left.length>0 && right.length>0){        
			if(left[0]<right[0]){            
				result.push(left.shift());        
			}else{            
				result.push(right.shift());        
			}    
		}   
		alert(" left="+left+" right"+right+" result="+result); 
		alert(result.concat(left).concat(right));
		return result.concat(left).concat(right);
	}

	function mergeSort(items){
		if(items.length == 1){        
			return items;    
		}    
		var middle=Math.floor(items.length/2),    
		left=items.slice(0,middle),    
		right=items.slice(middle);
		alert(" middle="+middle+" items.length="+items.length+" left="+left+" right"+right+" items"+items); 
		return merge(mergeSort(left),mergeSort(right));
	}



</script>


</head>




<body>
	<div>归并排序</div>
</body>
</html>
原文地址:https://www.cnblogs.com/tonglin0325/p/5179416.html