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);*/