※ 이 글은 chatGPT를 기반으로 작성한 글입니다.
① 버블 정렬(bubble sort)과 교환 정렬은 O(N^2)의 시간 복잡도를 갖는 정렬 알고리즘 중 하나이다.
㉠ 정렬의 가장 이상적인 상황에서의 시간 복잡도는 O(N)이다.
ⓐ 모든 항목이 정렬되어 있을 경우 단순 탐색만 진행하면 되기 때문에 O(N)의 시간 복잡도를 갖는다.
㉡ 버블 정렬과 교환 정렬의 최악의 상황에서 시간 복잡도는 O(N^2)이다.
② 버블 정렬과 교환정렬의 기본적인 작동원리는 인접한 두 수를 비교해 위치를 바꾸는 것으로 동일하다.
㉠ 버블 정렬의 작동 원리는 다음과 같다.
ⓐ 선택된 배열의 첫 번째 요소와 두 번째 요소를 비교한다. 만약 정렬되어 있지 않다면 둘의 위치를 바꾼다.
ⓑ 인접한 다음 쌍으로 이동하고 배열의 끝에 도달할 때까지 ⓐ를 반복한다.
ⓒ ⓑ을 더이상 교환이 이루어지지 않을 때까지 반복한다.
㉡ 버블 정렬의 의사 코드(psuedo code)는 다음과 같다.
㉢ 교환 정렬의 작동 원리는 다음과 같다.
ⓐ 초기 피벗 인덱스(pivot index)를 0으로 한다.
ⓑ 배열의 정렬되지 않은 부분에서 가장 작은 값을 찾는다.
ⓒ 피벗 인덱스에 위치한 요소와 가장 작은 요소를 교환한다.
ⓓ 피벗 인덱스를 1 증가시키며, 배열의 크기보다 1 작을 때까지 ⓑ, ⓒ를 반복한다.
㉣ 교환 정렬의 의사 코드는 다음과 같다.
③ 버블 정렬의 시간 복잡도는 O(N^2)이다.
㉠ 가장 단순하게 생각해보면 최댓값을 찾기 위해 매 탐색마다 인접한 한 쌍을 두 요소를 비교한다.
㉡ i 는 0부터 N - 1까지 가능하다.
㉢ 어떠한 k에 대해서 T는 무조건 kN^2에 대해 무조건 같거나 작기 때문에 교환 정렬의 시간 복잡도는 O(N^2)이다.
㉣ N을 키울 수록 대략 N^2에 비례하게 커짐을 알 수 있다.
④ 교환 정렬의 시간 복잡도는 O(n^2)이다.
㉠ 가장 단순하게 생각해보면 최솟값을 찾기 위해 매 탐색마다 피봇과 N-i개의 배열의 요소를 비교한다.
㉡ i 는 0부터 N - 1까지 가능하다.
㉢ 어떠한 k에 대해서 T는 무조건 kN^2에 대해 무조건 같거나 작기 때문에 교환 정렬의 시간 복잡도는 O(N^2)이다.
㉣ N을 키울 수록 대략 N^2에 비례하게 커짐을 알 수 있다.
'All about Data Structure & Algorithm > 기본' 카테고리의 다른 글
퀵 정렬(Quick Sort) (0) | 2023.03.24 |
---|---|
병합 정렬(Merge Sort) (0) | 2023.03.23 |
선택 정렬(Selection Sort) (0) | 2023.03.21 |
이진 검색 알고리즘(Binary Search Algorithm) (0) | 2023.03.17 |
삽입 정렬(Insertion Sort)과 이진 삽입 정렬(Binary Insertion Sort) (0) | 2023.03.16 |