归并排序
var fs = require("fs");
var writerStream = fs.createWriteStream('output.txt');
for(var length=1;length<=50;length++){
	
	var arr = fillIntArr(length,100);
	
	writerStream.write( '['+ arr.toString() + ']','UTF8');
	
	mergeSort(arr);
	writerStream.write('\r\n','UTF8');
	writerStream.write('['+ arr.toString() + ']','UTF8');
	
	writerStream.write('\r\n','UTF8');
}
console.log("排序完成!");
writerStream.end();
writerStream.on('error', function(err){
   console.log(err.stack);
});
function mergeSort(arr){
	
	for(var seed=1;seed<arr.length;seed*=2){
		//console.log("seed:",seed);
		for(var key=0;key<arr.length;key+=2*seed){
		/*
			数组 arr 被分割成 数组长度为seed 的子数组集合;
		*/
			
			var arrA=arr.slice(key,key+seed),
				arrB=arr.slice(key+seed,key+2*seed);
			
			var arrC=[],cI=0;
			
			arrC = merge(arrA,arrB);
			
			while(cI<arrC.length){
				arr[key+cI] = arrC[cI++];
			}
			
			/*
			console.log("arrA:",arrA);
			console.log("arrB:",arrB);
			*/
		}
	}
	
}
function merge(arrA,arrB){
	
	var aI=0,bI=0,arrC=[];
	
	while(aI<arrA.length && bI < arrB.length){
		if(arrA[aI]<arrB[bI]){
			arrC.push(arrA[aI++]);
		}else{
			arrC.push(arrB[bI++]);
		}
	}
	while(aI<arrA.length){
		arrC.push(arrA[aI++]);
	}
	while(bI<arrB.length){
		arrC.push(arrB[bI++]);
	}
	return arrC;
}
function fillIntArr(length,max){
	
	var nums = [];
	
	while(length){
		nums.push(~~(Math.random() * max));
		length --;
	}
	
	return nums;
}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号