ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๐ก How Quicksort Works ?
ํต์ ๋ ฌ์ ํผ๋ด(pivot)์ ๊ธฐ์ค์ผ๋ก ํฐ ์ซ์์ ์์ ์ซ์๋ฅผ ์๋ก ๊ตํํ ๋ค์ ๋ฐฐ์ด์ ๋ฐ์ผ๋ก ๋๋๋ค.
์ฆ, ํผ๋ด๋ณด๋ค ์์ ์ซ์๋ ํผ๋ด ์ผ์ชฝ์ผ๋ก, ํฐ ์ซ์๋ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ถํ ํ๋ค.
์ด๋ฐ์์ผ๋ก ์ญ ๋ด๋ ค๊ฐ๋ฉด ์ ๋ ฌ์ด ๋๊ณ , ์ด๋ฅผ ๊ฒฐํฉํ๋ฉด ์ ๋ ฌ๋ ๋ฆฌ์คํธ๋ฅผ ์ป์ ์ ์๋ค.
๐ ๋ถํ ์ ๋ณต ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํ๊ท ์ ์ผ๋ก ๋งค์ฐ ๋น ๋ฅธ ์ํ ์๋๋ฅผ ๋ํ๋ด๋ ๊ฒ์ด ํน์ง์ด๋ค.
์ฝ๋
def quick_sort(left, right):
if left >= right:
return
pivot = left
i = left+1
j = right-1
while i <= j:
while i <= j and a[pivot] >= a[i]:
i += 1
while i <= j and a[pivot] <= a[j]:
j -= 1
if i <= j:
a[i], a[j] = a[j], a[i]
a[pivot], a[j] = a[j], a[pivot]
quick_sort(left, j)
quick_sort(j+1, right)
T = int(input())
for tc in range(1, T + 1):
N = int(input())
a = list(map(int, input().split()))
quick_sort(0, len(a))
print("#{} {}".format(tc, a[N//2]))
'algorithm > swea' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[swea] 5209. ์ต์ ์์ฐ ๋น์ฉ / python ํ์ด์ฌ (0) | 2021.05.05 |
---|---|
[swea] 5208. ์ ๊ธฐ๋ฒ์ค2 / python ํ์ด์ฌ (0) | 2021.05.05 |
[swea] 5204. ๋ฒ ์ด๋น์ง ๊ฒ์ / python ํ์ด์ฌ (0) | 2021.04.15 |
[swea] 5202. ํ๋ฌผ ๋ํฌ / python ํ์ด์ฌ (0) | 2021.04.15 |
[swea] 5201. ์ปจํ ์ด๋ ์ด๋ฐ / python ํ์ด์ฌ (0) | 2021.04.15 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
TAG
- dfs
- ์ผ์ฑ์ฝํ
- ์์ด๋๋ง์๊ธฐ
- 21609 ์์ด ์คํ๊ต
- merge์๋ฌ
- ์๊ณ ๋ฆฌ์ฆ
- 2018 ์นด์นด์ค ๊ณต์ฑ
- Python
- BFS
- 17406 ๋ฐฐ์ด๋๋ฆฌ๊ธฐ4
- dp
- react
- swea
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋ธ๋ฃจํธํฌ์ค
- 20057 ๋ง๋ฒ์ฌ ์์ด์ ํ ๋ค์ด๋
- ๋ณด์์ผํ
- 2579 ๊ณ๋จ์ค๋ฅด๊ธฐ
- ๊ธฐ์ง๊ตญ์ค์น
- ๋ฐฑ์ค
- ํ์ด์ฌ
- git ๋ฏธ๋ฌ๋ง
- ์ผ์ฑ๊ธฐ์ถ
- merge ์๋ฌ
- 20056 ๋ง๋ฒ์ฌ ์์ด์ ํ์ด์ด๋ณผ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
- Total
- Today
- Yesterday
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ