해당 포스트는 이지스퍼블리싱, 『알고리즘 코딩테스트 자바 편』, Gene 김종관 을 참고하여 작성하였습니다.
정렬 알고리즘
- 버블(bubble) : 데이터의 인접 요소끼리 비교하고, swap 연산을 수행하며 정렬하는 방식
- 선택(selection) : 대상에서 가장 크거나 작은 데이터를 찾아가 선택을 반복하면서 정렬하는 방식
- 삽입(insertion) : 대상을 선택해 정렬된 영역에서 선택 데이터의 적절한 위치를 찾아 삽입하면서 정렬하는 방식
- 퀵(quick) : pivot 값을 선정해 해당 값을 기준으로 정렬하는 방식
- 병합(merge) : 이미 정렬된 부분 집합들을 효율적으로 병합해 전체를 정렬하는 방식
- 기수(radix) : 데이터의 자릿수를 바탕으로 비교해 데이터를 정렬하는 방식
버블 정렬(bubble sort)은 두 인접한 데이터의 크기를 비교해 정렬하는 방법입니다. 간단하게 구현할 순 있지만, 시간 복잡도는 O(n²)으로 다른 정렬 알고리즘보다 속도가 느린 편입니다. 다음 그림과 같이 루프(loop)를 돌면서 인접한 데이터 간의 swap 연산으로 정렬합니다.
정렬 과정은 다음과 같습니다.
만약 특정한 루프의 전체 영역에서 swap이 한 번도 발생하지 않았다면 그 영역 뒤에 있는 데이터가 모두 정렬됐다는 뜻이므로 프로세스를 종료해도 됩니다.
[참고 자료] https://hoons-dev.tistory.com/5