///
Search
▶️

정렬(Sort Algorithm)

1. 정렬(Sort)

Sort
특정 기준을 적용하여 데이터를 나열하는 알고리즘
오름차순 정렬(갈수록 커지는 것)
내림차순 정렬(갈수록 작아지는 것)

2. 기본적인 정렬 알고리즘의 종류

2.1. 선택정렬(Selection Sort)

오름차순 정렬이라고 가정했을 때, 최솟값을 맨 앞으로 이동시킴으로써 정렬합니다.(오름차순)
왼쪽은 정렬이 모두 되었다고 보장할 수 있습니다.
O(N^2)의 시간복잡도를 가지게 됩니다.
for i in 0...N - 1 { var index: Int = i for j in (i + 1)...N { if data[index] > data[j] { index = j } } let temp: Int = data[index] data[index] = data[i] data[i] = temp }
Swift
복사

2.2. 삽입정렬(Insertion Sort)

원소를 차례대로 정렬된 배열에 삽입시킴으로써 정렬하는 알고리즘 입니다.
왼쪽은 정렬이 모두 되었다고 보장할 수 있습니다.
O(N^2)의 시간복잡도를 가지게 됩니다.
for i in 1...(N - 1) { for j in stride(from: i, to: 0, by: -1) { if data[j] < data[j - 1] { let temp: Int = data[j] data[j] = data[j - 1] data[j - 1] = temp } } }
Swift
복사

2.3. 버블정렬(Bubble Sort)

오름차순 정렬이라고 가정했을 때, 인접한 원소를 비교하여 큰 수를 뒤로 보냄으로써 정렬하는 알고리즘 입니다.
오른쪽은 정렬이 모두 되었다고 보장할 수 있습니다.
O(N^2)의 시간복잡도를 가지게 됩니다.
for i in stride(from: N - 1, to: 0, by: - 1) { for j in 0...(i - 1) { if data[j] > data[j + 1] { let temp: Int = data[j] data[j] = data[j + 1] data[j + 1] = temp } } }
Swift
복사