Skip to content

Commit a5bb630

Browse files
committed
feat: 퀵 정렬 구현
1 parent d53a3a9 commit a5bb630

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package sort;
2+
3+
public class QuickSort implements Sort {
4+
5+
@Override
6+
public void sort(int[] array) {
7+
quickSort(array, 0, array.length - 1);
8+
}
9+
10+
private void quickSort(int[] array, int left, int right) {
11+
if (left < right) { // 교차되기 전까지
12+
int pivot = partition(array, left, right);
13+
quickSort(array, left, pivot - 1);
14+
quickSort(array, pivot + 1, right);
15+
}
16+
}
17+
18+
private int partition(int[] array, int left, int right) {
19+
int pivot = array[left];
20+
int k = right;
21+
22+
for (int i = right; i > left; i--) {
23+
if (array[i] > pivot) {
24+
swap(array, i, k);
25+
k--;
26+
}
27+
}
28+
29+
swap(array, left, k);
30+
return k;
31+
}
32+
33+
private void swap(int[] array, int index1, int index2) {
34+
int temp = array[index1];
35+
array[index1] = array[index2];
36+
array[index2] = temp;
37+
}
38+
}

0 commit comments

Comments
 (0)