최악의 경우가 아닌 Average Case로 Big O notation을 계산한다.
최악의 경우는 O(n^2) : 이미 정렬된 데이터가 들어온 경우 혹은 반대로 정렬된 경우
최선의 경우는 O(N*logN) : 매번 반으로 쪼개지는 경우!
var test =Array.from({length: 6}, () => Math.floor(Math.random() * 39)+1);
function quicksort(start,end){
if(start===end)
{
return;
}
var pointer=start;
var pivot=test[end];
for(var j=start;j<end;j++){
if(test[j]<=pivot){
var tmp2=test[j];
var tmp=test.splice(pointer,j-pointer);
if(tmp){
for(var i=0;i<tmp.length;i++)
{
test.splice(pointer+1+i,0,tmp[i]);
}
}
test[pointer]=tmp2 ;
pointer++;
}
}
if(pointer===end){
quicksort(start,end-1);
}
else if(pointer===start){
test[end]=test[start];
test[start]=pivot
quicksort(start+1,end);
}
else{
var tmp=test[pointer];
test[pointer]=pivot
test[end]=tmp;
quicksort(start,pointer);
quicksort(pointer+1,end);
}
}
console.log(test);
quicksort(0,test.length-1);
console.log(test);'ComputerScience > Algorithm' 카테고리의 다른 글
| [프로그래머스] 소수만들기 (0) | 2020.05.20 |
|---|---|
| [프로그래머스]멀쩡한 사각형 (0) | 2020.05.19 |
| 이진트리 (0) | 2020.05.16 |
| Non-Comparison Sorting (0) | 2020.05.11 |
| Hear Sort (0) | 2020.05.09 |