test

test01

by Chris_Walter

JavaScript

/*
	function test(){
		let data=[6,5,-5,3,2,1];
		mergeSort(data, 0, data.length-1);
		//console.log(data);
		/* 大量資料的測試
		let data=[];
		for(let i=0;i<100000;i++){
			data.push(Math.random()*1000);
		}
		console.time();
		mergeSort(data, 0, data.length-1);
		console.timeEnd();
		
	}
 function mergeSort(arr, startIndex, endIndex){
		if(startIndex<endIndex){ // 一直切割,直到剩下一個資料,不繼續切割
			const midIndex=Math.floor((startIndex+endIndex)/2);
			mergeSort(arr, startIndex, midIndex); // 切出左邊陣列
			mergeSort(arr, midIndex+1, endIndex); // 切出右邊陣列
			// 合併左右兩邊的陣列
			const leftArr=arr.slice(startIndex, midIndex+1);
			console.log(leftArr);
			const rightArr=arr.slice(midIndex+1, endIndex+1);
			let leftIndex=0;
			let rightIndex=0;
			let arrIndex=startIndex;
			while(leftIndex<leftArr.length && rightIndex<rightArr.length){
				if(leftArr[leftIndex]<rightArr[rightIndex]){
					arr[arrIndex]=leftArr[leftIndex];
					leftIndex++;
				}else{
					arr[arrIndex]=rightArr[rightIndex];
					rightIndex++;
				}
				arrIndex++;
			}
			// 如果剩下左邊,把左邊剩下的資料都塞進結果中
			while(leftIndex<leftArr.length){
				arr[arrIndex]=leftArr[leftIndex];
				leftIndex++;
				arrIndex++;
			}
			// 如果剩下右邊,把右邊剩下的資料都塞進結果中
			while(rightIndex<rightArr.length){
				arr[arrIndex]=rightArr[rightIndex];
				rightIndex++;
				arrIndex++;
			}
		}
	}
	test();
	*/
	/*
	
	 function mergeSort(arr, startIndex, endIndex){
		if(startIndex<endIndex){ // 一直切割,直到剩下一個資料,不繼續切割
			const midIndex=Math.floor((startIndex+endIndex)/2);
			mergeSort(arr, startIndex, midIndex); // 切出左邊陣列
			console.log('1');
			mergeSort(arr, midIndex+1, endIndex); // 切出右邊陣列
			console.log('2');
						// 合併左右兩邊的陣列
			const leftArr=arr.slice(startIndex, midIndex+1);
			console.log(leftArr);
			const rightArr=arr.slice(midIndex+1, endIndex+1);
			console.log(rightArr);
		}
	}
	  let data=[6,5,-5,3,2,1];
		mergeSort(data, 0, data.length-1);*/