본문 바로가기
반응형

Computer Science/알고리즘21

버블 정렬(Bubble Sort) 이번에 배워볼 정렬 알고리즘은 버블 정렬(Bubble Sort)이다. 버블 정렬은 인접한 2개의 원소를 비교하여 크기가 순서대로 되어 있지 않으면 서로 교환하는 비교-교환 과정을 리스트의 왼쪽 끝에서 시작하여 오른쪽 끝까지 진행하여 정렬하는 알고리즘이다. 선택 정렬과 삽입 정렬은 정렬된 원소들이 좌측에 위치하는 반면, 버블 정렬은 이와 다르게 정렬된 원소들이 우측에 위치하는 차이점이 존재한다. 버블 정렬의 가장 큰 문제점은 순서에 맞지 않은 원소를 인접한 원소와 매번 교환한다는 것이다. 특정 원소가 최종 정렬 위치에 이미 있는 경우라도 교환되는 일이 발생하기 때문에 구현하기가 정말 단순하지만 좋지 못한 성능 때문에 거의 사용되지 않는다. 버블 정렬(Bubble Sort)의 시간 복잡도는 O(N^2)이다... 2021. 7. 1.
삽입 정렬(Insertion Sort) 이번에 배워볼 정렬 알고리즘은 삽입 정렬(Insertion Sort)이다. 삽입 정렬은 손안의 카드를 정렬하는 방법과 유사하다. 새로운 원소를 기존에 정렬된 원소 사이의 올바른 자리를 찾아 삽입함으로써 정렬이 유지되게 한다. 삽입 정렬은 비교적 많은 레코드들의 이동을 포함하기 때문에 레코드 수가 많고 레코드 크기가 클 경우에 적합하지 않음을 알 수 있다. 반면, 안정한 정렬 방법으로서 레코드의 수가 적을 경우 알고리즘 자체가 매우 간단하므로 다른 복잡한 정렬 방법보다 유리할 수 있다. 또한, 삽입 정렬은 대부분의 레코드가 이미 정렬되어 있는 경우에는 매우 효율적일 수 있다. 삽입 정렬(Insertion Sort)의 시간 복잡도는 O(N^2)이다. 다만, 리스트가 이미 정렬되어 있는 상태라면 O(N)의 시.. 2021. 7. 1.
선택 정렬(Selection Sort) 정렬 알고리즘은 알고리즘에서 가장 먼저 배우는 알고리즘이다. 정렬 알고리즘에는 선택 정렬, 삽입 정렬, 버블 정렬, 합병 정렬, 퀵 정렬, 힙 정렬 등 다양한 정렬 알고리즘이 존재한다. 선택, 삽입, 버블 정렬은 구현이 상대적으로 쉽지만 성능이 좋지 않은 반면, 합병, 퀵, 힙 정렬은 구현이 상대적으로 복잡하지만 성능이 훨씬 좋기 때문에 후자의 정렬들을 사용하는 것을 나는 선호하는 편이다. 하지만 성능의 차이를 알기 위해선 모든 정렬 알고리즘의 원리를 알아야한다. 이번에는 선택 정렬(Seletcion Sort)을 다뤄보겠다. 선택 정렬은 주어진 리스트를 돌면서 가장 작은(큰) 원소를 찾아 정렬된 원소를 제외한 제일 앞의 원소와 교환해주면 되기 때문에 가장 이해하기가 쉽고 단순한 정렬 방법이다. 선택 정렬.. 2021. 7. 1.
반응형