프론트엔드 언어2017. 6. 18. 21:17


1. 단순정렬


function simpleSort(arr) {

var t;


for (var i=0; i<arr.length-1; i++) {

for (var j=i+1; j<arr.length; j++) {

if (arr[i] > arr[j]) {

t = arr[i];

arr[i] = arr[j];

arr[j] = t;

} // End of if

} // End of for // j

} // End of for // i


return arr;

}


console.log(simpleSort(new Array(3,1,4,2))); // 출력 1234




2. 버블정렬 


function bubbleSort(arr) {

var t;


for (var i=0; i<arr.length; i++) {

for (var j=0; j<arr.length-1; j++) {

if (arr[j] > arr[j+1]) {

t = arr[j+1];

arr[j+1] = arr[j];

arr[j] = t;

}

} // End of for // j

} // End of for // i


return arr;

}


console.log(bubbleSort(new Array(3,1,4,2))); // 출력 1234




3. 삽입정렬


function insertionSort(arr) {

var t;


for (var i=1; i<arr.length; i++) {

t = arr[i];

for (var j=i-1; j>=0; j--) {

if (arr[j] > t) {

arr[j+1] = arr[j];

} else {

break;

} // End of if

} // End of for // j

arr[j+1] = t;

} // End of for // i


return arr;

}


console.log(insertionSort(new Array(2,6,1,9,5))); // 출력 12569




4. 퀵정렬


function quickSort(arr) {


if (arr.length < 2) {

return arr;

}


var pivot = arr[Math.floor(arr.length/2)];


var middle = arr.filter(function (data) {

return data == pivot;

});


var low = quickSort(arr.filter(function (data) {

return data < pivot;

}));


var high = quickSort(arr.filter(function (data) {

return data > pivot;

}));

return low.concat(middle).concat(high);

}


console.log(quickSort(new Array(4,8,6,5,2,1,3,9,7))); // 출력 123456789





대부분의 경우 퀵정렬이 빠르지만 모든 경우에 고속으로 정렬이 가능한 방법은 없다.

그러므로 각각 정렬의 특징을 이해한 후 가장 적절한 방법을 선택해야 한다.




'프론트엔드 언어' 카테고리의 다른 글

jQuery Mobile ajax refresh Issue  (1) 2017.03.29
함수의 호출  (0) 2017.03.24
arguments  (0) 2017.03.24
클로저  (0) 2017.03.24
값으로서의 함수와 콜백  (0) 2017.03.24
Posted by EL2A