정렬
정렬 알고리즘
컴퓨터 분야에서 중요시 되는 문제 가운데 하나.
데이터가 주어졌을 때 이를 순서대로 나열하는 문제.
정렬해야 하는 이유는 탐색을 위해서.
데이터가 정렬되어 있을 시 이진 탐색 이라는 알고리즘 사용 가능
삽입과 삭제가 자주 되는 경우 정렬에 더 많은 시간이 들어가므로 순차 탐색 하는 경우도 있음 (해시 탐색도 사용)
조회에 필요한 것이 바로 검색
-
이진 탐색
이미 정렬된 데이터의 집합에 유효
정렬을 수행 하는 이유 중 하나.
임의의 값을 집었을 시 그 값보다 왼쪽은 무조건 그 값보다 작고, 오른쪽은 무조건 그 값보다 크다.
-
비교 정렬
주어진 데이터 값 서로 비교하여 순서에 맞게 자리를 바꿔주는 형태
데이터의 크기를 n이라고 했을 때 비교 정렬의 경우에는 n^2 번 만큼 비교 해야 정렬됨
온갖 수단과 방법을 동원해 현재는 대략 n lg n 번 바교할 수 있도록 줄인 상태.
n lg n 보다 더 이상 줄일 수 없음
-
실제
실제로 돌려보면 결과가 다르게 나오는 경우 종종 있음
하드웨어 입출력에 관여해 정렬 알고리즘마다 예상 시간이 각각 다르게 나오는 현상.
요약
-
정렬은 데이터가 주어졌응ㄹ 때 이를 순서대로 나열.
-
정렬해야 하는 이유는 이진탐색과 같은 탐색을 사용하기 위해.
-
이진 탐색은 임의의 값을 집었을 시 그 값의 왼쪽은 모두 그 값보다 작고 오른쪽은 모두 그 값보다 큼
-
비교 정렬은 주어진 값을 서로 비교해여 순서에 맞게 자리를 바꿔주는 형태
-
실제로 정렬 알고리즘들의 예상 시간은 하드웨어 입출력 때문에 실제와 다른 경우 많음