프로그래밍/알고리즘
선택 정렬 (Select Sort)
Cat체셔
2016. 5. 11. 09:14
Javascript로 구현한 Select sort
주어진 배열 이외에 다른 저장공간을 필요로 하지 않는 제자리 정렬 알고리즘의 하나로 시간 복잡도는 입니다. 어떤 상황에서든 에 비례하는 시간이 걸립니다.
1 5 6 8 7 4 3 9 2
1 5 6 8 7 4 3 9 2
1 2 6 8 7 4 3 9 5
1 2 6 8 7 4 3 9 5
1 2 3 8 7 4 6 9 5
1 2 3 8 7 4 6 9 5
1 2 3 4 7 8 6 9 5
1 2 3 4 7 8 6 9 5
1 2 3 4 5 8 6 9 7
1 2 3 4 5 8 6 9 7
1 2 3 4 5 6 8 9 7
1 2 3 4 5 6 8 9 7
1 2 3 4 5 6 7 9 8
1 2 3 4 5 6 7 9 8
1 2 3 4 5 6 7 8 9
소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | for(var i = 0 ; i < this.nodes.length - 1 ; ++i) { var min = i; for(var j = i + 1 ; j < this.nodes.length ; ++j) { if(this.nodes[min].getSize() > this.nodes[j].getSize()) min = j; } if(min == i) continue; var temp = this.nodes[i]; this.nodes[i] = this.nodes[min]; this.nodes[min] = temp; this.nodes[i].x = 5 + i * 55; this.nodes[min].x = 5 + min * 55; } | cs |
안쪽 포문에서는 그 자리에 해당하는 최소값을 찾고 바깥쪽 포문에서는 딱 한번 swap 해줍니다. swap이 조금 일어나기때문에 거품정렬에 비해 속도가 빠릅니다. (그래도 ...)