sort 2

[CS50] 선택 정렬

저번 포스팅의 버블 정렬은 직관적이긴 하지만 O(n^2)의 시간이 소요된다고 했습니다. 이번에는 다른 정렬 알고리즘인 선택 정렬에 대해 공부해보도록 하겠습니다. 선택정렬 각 자료를 비교하는 횟수는 증가하지만 교환 횟수를 최소화하는 정렬입니다. 배열 안의 자료 중 가장 작은 수(혹은 큰 수)를 찾아 첫 번째 위치(혹은 가장 마지막 위치)의 수와 교환해주는 방식을 사용합니다. 버블 정렬과 마찬가지로 예를 들어 설명하자면 6 4 3 7 1 2 8 5 라는 정렬되지 않은 숫자가 있을 때 이를 선택 정렬을 이용해 오름차순으로 정리하는 방법은 우선 위의 수중에서 가장 작은 값을 찾습니다. (여기서 1) 1 4 3 7 6 2 8 5 // 1과 6의 위치를 바꿉니다. 그다음 1을 제외하고 4부터 시작해서 또 가장 작은..

[CS50] 버블 정렬

어떤 배열이 있을 때 그 배열이 이미 정렬되어있는 배열이라면 훨씬 빠른 속도로 검색이 가능합니다. 정렬하기 위한 방법은 여러 가지가 존재하고 각각 실행시간도 차이가 있습니다. 오늘은 정렬 기법 중 하나인 버블 정렬에 대해 공부해보도록 하겠습니다. 버블정렬 사실 이러한 정렬이 있다는 건 알고 있었지만 버블 정렬이라고 불리는지는 몰랐습니다. ㅎㅎ 버블 정렬은 거품이 떠오르듯 두 개의 인접한 자료값을 비교하면서 위치를 교환하는 방식으로 정렬하는 방법을 말합니다. 버블정렬은 단 두개의 요소만 정렬해주는 좁은 범위의 정렬에 집중하기 때문에 간단하지만 하나의 요소를 정렬하기 위해서 많은 낭비가 발생할 수 있습니다. 예를 들어 설명하자면 6 4 3 7 1 2 8 5 라는 순서의 숫자가 있습니다. 이를 오름차순으로 정..