/*
난수발생
*/
var tgArr = [];
for(var i=0;i<100;i++){
var result = Math.floor(Math.random() * 100) + 1;
tgArr.push(result);
}



function sort(arr){
for(var i = 1;i < arr.length;i++){
for(var j = i-1;(j >= 0) && (arr[j] > arr[i]);j--){
const tg = arr[i];
const co = arr[j];
arr[j] = tg;
arr[i] = co;
i--;
}
}
return arr
}

console.time('삽입정렬');
// console.log(sort(tgArr));
sort(tgArr)
console.timeEnd('삽입정렬');


function mergeSort(arr){
if(arr.length < 2) return arr;
var mdl = Math.floor(arr.length/2);
var left = arr.slice(0, mdl);
var right = arr.slice(mdl, arr.length);

return merge(mergeSort(left), mergeSort(right));
}

function merge(left, right){
var result = [];
while(left.length && right.length){
if(left[0]<=right[0]){
result.push(left.shift());
}else{
result.push(right.shift());
}
}
while (left.length) result.push(left.shift()); // 어느 한 배열이 더 많이 남았다면 나머지를 다 넣어줍니다.
while (right.length) result.push(right.shift()); // 오른쪽도 마찬가지
return result;
}
console.time('합병정렬');
// console.log(mergeSort(tgArr));
mergeSort(tgArr)
console.timeEnd('합병정렬');


function selectSort(arr){
var result = [];

while(arr.length){
var min = Math.min.apply(null, arr);
var minIdx = arr.indexOf(min);

result.push(min);
arr.splice(minIdx,1);
}

return result;
}

console.time('선택정렬');
// console.log(selectSort(tgArr));
selectSort(tgArr);
console.timeEnd('선택정렬');


100개시

삽입정렬: 0.368ms

합병정렬: 0.193ms

선택정렬: 0.082ms


1000개시

삽입정렬: 4.608ms

합병정렬: 2.122ms

선택정렬: 1.366ms


10000개시

삽입정렬: 127.541ms

합병정렬: 14.146ms

선택정렬: 107.715ms


30000개시

삽입정렬: 1052.861ms

합병정렬: 40.302ms

선택정렬: 913.972ms



'C Lang > JS Technic' 카테고리의 다른 글

Named and Optional Arguments in JavaScript(자바스크립트로 지정 파라미터 설정하기)  (0) 2019.07.11
React란 무엇인가  (0) 2019.06.26
MVC패턴  (0) 2019.06.04
rest parameters  (0) 2019.03.25
async/await 入門(JavaScript)  (0) 2018.10.12

+ Recent posts