Skip to content

Commit e1cb64a

Browse files
committed
5강 빠른 정렬 예제
1 parent 952b370 commit e1cb64a

File tree

1 file changed

+31
-2
lines changed

1 file changed

+31
-2
lines changed

Algorithm/Inflearn/Algorithm-Inflearn/main.swift

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,36 @@ class Sort {
178178

179179
return result
180180
}
181+
182+
/// 4. Quick Sort
183+
func quickSort(data: inout [Int], p: Int, r: Int) {
184+
if p < r {
185+
let q = partition(data: &data, p: p, r: r)
186+
quickSort(data: &data, p: p, r: q - 1)
187+
quickSort(data: &data, p: q + 1, r: r)
188+
}
189+
}
190+
191+
func partition(data: inout [Int], p: Int, r: Int) -> Int {
192+
let pivot = data[r]
193+
var i = p - 1
194+
var j = p
195+
196+
while j <= r - 1 {
197+
if data[j] >= pivot {
198+
j += 1
199+
} else {
200+
i += 1
201+
data.swapAt(i, j)
202+
j += 1
203+
}
204+
}
205+
206+
data.swapAt(i + 1, r)
207+
return i + 1
208+
}
181209
}
182210

183-
print(Sort().split(data: [6, 4, 1, 2, 3, 5, 7, 8]))
184-
print(Sort().split(data: [4, 3, 6, 1, 2, 8, 7, 5]))
211+
var data = [31, 8, 48, 73, 11, 3, 20, 29, 65, 15]
212+
Sort().quickSort(data: &data, p: 0, r: 9)
213+
print(data)

0 commit comments

Comments
 (0)