๊ฐ๋
๋ฐฐ์ด์ ๋๋ก ๋ถํ ํ๊ณ ๋ถํ ํ ๋ฐฐ์ด์ ์ฌ๊ท ํธ์ถ๋ก ์ ๋ ฌํ์ฌ ํ๋์ ๋ฐฐ์ด๋ก ๋ง๋ ๋ค๋ ์ ์ด ํฉ๋ณ์ ๋ ฌ๊ณผ ๋น์ทํ์ง๋ง, ์ข/์ฐ๋ฅผ ๊ท ๋ฑ๋ถํ ํ๋ ๊ฒ์ด ์๋๋ค. pivot(๊ธฐ์ค ์์)์ ์ ์ ํ์ฌ pivot๋ณด๋ค ์์ ์์๋ ๋ชจ๋ ์ผ์ชฝ ๋ฐฐ์ด๋ก, ํฌ๊ฑฐ๋ ๊ฐ์ ์์๋ ๋ชจ๋ ์ค๋ฅธ์ชฝ ๋ฐฐ์ด๋ก ๊ฐ๋๋ก ๋ถํ ํ๋ค.
* ์์ ์ด๋ฏธ์ง์์ ๊ฒ์์ ๋ฐฐ๊ฒฝ์ ์ซ์๊ฐ pivot
ํน์ง
โช ๋ถ์์ ์ ๋ ฌ
โช ๋น๊ต ์ ๋ ฌ(๊ฐ ๋น๊ต์ ๊ธฐ๋ฐํ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ)
โช ์ฌ๊ท ํธ์ถ์ด ํ๋ฒ ์งํ๋ ๋๋ง๋ค ์ต์ํ ํ๋์ ์์๋ ์์น๊ฐ ๊ฒฐ์ ๋๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ ๋๋๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๋ ๊ฒ์ ๋ณด์ฅ ๊ฐ๋ฅ
ํ๋ฆ
โ pivot ์ ์
โก [๋ถํ ] pivot๋ณด๋ค ์์ ์์๋ค์ด ์์ ์ค๊ณ , ๋ค์๋ ๊ฐ์ด ํฌ๊ฑฐ๋ ๊ฐ์ ๋ชจ๋ ์์๋ค์ด ์ค๋๋ก ๋ฐฐ์ด์ ๋๋ก ๋ถํ
โข [์ ๋ณต] ๋ถ๋ถ ๋ฐฐ์ด์ ์ ๋ ฌ(๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ์ถฉ๋ถํ ์์ง ์์ ๊ฒฝ์ฐ ์ํ ํธ์ถ๋ก ๋ค์ ๋ถํ ์ ๋ณต ์ ์ฉ)
โฃ [๋ณํฉ] ์ ๋ ฌ๋ ๋ถ๋ถ ๋ฐฐ์ด๋ค์ ํ๋์ ๋ฐฐ์ด๋ก ํฉ์น๊ธฐ
์ฌ๊ท๋ก ๊ตฌํํ ํต ์ ๋ ฌ(C์ธ์ด)
#include <stdio.h>
void quickSort(int* data, int left, int right) {
// ์์๊ฐ 1๊ฐ์ธ ๊ฒฝ์ฐ
if (left >= right) {
return;
}
int pivot = left;
int i = pivot + 1; // ์ผ์ชฝ ์์ ์ง์
int j = right; // ์ค๋ฅธ์ชฝ ์์ ์ง์
int temp;
// ๋ถํ ๊ณผ์
while(i <= j) {
while(i <= right && data[i] <= data[pivot]) {
i++;
}
while(j > left && data[j] >= data[pivot]) {
j--;
}
// ๋ฐ๊พธ๋ ์์ค์ i๊ฐ j๋ณด๋ค ์ปค์ง ๊ฒฝ์ฐ
if(i > j) {
temp = data[j];
data[j] = data[pivot]; // j๋ฒ์งธ ์์์ pivot ๊ต์ฒด
data[pivot] = temp;
}
else {
// i๋ฒ์งธ, j๋ฒ์งธ ์์น ๋ฐ๊พธ๊ธฐ
temp = data[i];
data[i] = data[j];
data[j] = temp;
}
printf("\n");
}
quickSort(data, left, j - 1); // ์ผ์ชฝ ๋ฐฐ์ด์ ๋ํด ํต ์ ๋ ฌ ๋ค์ ์ ์ฉ
quickSort(data, j + 1, right); // ์ค๋ฅธ์ชฝ ๋ฐฐ์ด์ ๋ํด ํต ์ ๋ ฌ ๋ค์ ์ ์ฉ
}
int main() {
int input[8] = { 15, 22, 13, 27, 12, 10, 20, 25 };
printf("์ ๋ ฌ ์ ๋ฐฐ์ด: ");
for (int i = 0; i < 8; i++) {
printf("%d ", input[i]);
}
quickSort(input, 0, 7);
printf("\n์ ๋ ฌ ํ ๋ฐฐ์ด: ");
for(int i=0; i<8; i++) {
printf("%d ", input[i]);
}
}
๐ ์ฐธ๊ณ ๋ธ๋ก๊ทธ
'Computer Science > DS & Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Shortest Path Algorithm: ๋ฒจ๋ง-ํฌ๋ ์๊ณ ๋ฆฌ์ฆ (0) | 2024.11.25 |
---|---|
Linear Data Structure: ์คํ, ํ, ๋ฑ (0) | 2021.07.04 |
Divide and Conquer: ๋ถํ ์ ๋ณต - ์ด๋ถํ์, ํฉ๋ณ์ ๋ ฌ (0) | 2021.04.16 |
Greedy: ํ์๋ฒ (0) | 2021.02.23 |
[์ข ๋ง๋ถ] ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ ํจ๋ฌ๋ค์ - ๋ฌด์ํ๊ฒ ํ๊ธฐ (0) | 2020.11.07 |