inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이썬으로 배우는 알고리즘 기초

퀵정렬

해결된 질문

215

hyb9579

작성한 질문수 7

0

안녕하세요! 강의 정말 잘 듣고 있습니다!
그런데 퀵정렬 마지막 부분에 조금 이해가 안되는 부분이 있어서 질문드립니다.
pivot을 low로 했을때, 잘 정렬된 리스트 일수록 퀵 정렬의 성능이 나빠진다고 하셨는데,
코드를 보면 잘 정렬된 리스트라도 무작위로 정렬된 리스트와 길이가 같다면 단위 연산의 실행횟수는 똑같을것으로 보이는데 왜 성능이 나빠진다고 하는지 궁금합니다.
잘 정렬된 리스트에 수행하지 않아도될 정렬 알고리즘이 수행되어서 비효율적으로 보여서 성능이 나빠졌다고 표현하신건지 궁금합니다!

algorithm

답변 1

0

주니온

정렬된 리스트를 가지고 시뮬레이션 해보면 쉽게 이해가 되실 겁니다.

S = [ 1, 2, 3, 4, 5]

위의 리스트를 파티션 하면, [1] 과 [2, 3, 4, 5]로 쪼개지지요?

S' = [ 2, 3, 4, 5] 도 마찬가지로 

[2] , [3, 4, 5]로 쪼개집니다.

이런 식으로 재귀 호출의 깊이가 N이 되므로, Divide-and-Conquer의 장점이 사라지는 것이죠.

동일한 입력으로 Merge Sort를 하면 어떻게 될까요?

재귀 호출을 할 때 마다 N/2으로 쪼개어 지므로, 재귀 호출의 깊이가 logN이 됩니다. 

0

hyb9579

아아 이해했습니다!

친철한답변 감사합니다!

문제 생각 몇분정도가 좋을까요

0

276

1

self

2

645

1

Two sum

2

342

1

Test_queue 출력 오류

1

557

2

int 범위

2

331

1

시간복잡도

1

1381

1

심화 과정 커리큘럼 질문

1

534

1

Algorithm 3.5 : Print Shortest Path 관련 질문 (플로이드 알고리즘)

0

283

0

코드 중간에 오류 보고 합니다!

1

243

1

쉽지 않네요 ㅠ

0

346

1

분기 한정법과 배낭 문제

0

399

1

배낭문제와 동적계획법

0

520

1

최적 이진검색트리 관계식

0

420

1

플로이드 알고리즘

0

433

2

n-Queens

0

226

1

큰정수의 계산법 강의에서 몫과 나머지

0

237

1

1.1알고리즘 이란 에서 교환정렬 파이썬으로 바꿀때

0

309

1

마지막 matrixmult 파라미터 값

0

270

2

내장함수에 언더스코프의 의미

0

662

2

def mergesort(S) 부분이 이해가 가지 않습니다.

0

290

3

이진탐색 vs 합병정렬

1

457

2

분할정복에서 큰 정수 곱셈 다른 계산법?

1

327

1

0번째 왜 자꾸 버리시는건가요?

2

347

1

리스트의 합

0

186

1