Quicksort는 왜“Quicksort”입니까?


9

이 질문의 요점은 다른 정렬 알고리즘에 대해 이것의 장점을 논하지 않는 것입니다. 확실히 이것을하는 다른 많은 질문이 있습니다. 이 질문은 이름에 관한 것입니다. Quicksort가 "Quicksort"라고 불리는 이유는 무엇입니까? 물론, 그것은 "빠른"것이지만 항상 그런 것은 아닙니다. O (N ^ 2) 로의 변성 가능성은 잘 알려져있다. 이 문제를 완화하기 위해 Quicksort에 대한 다양한 수정이 있지만 최악의 경우를 보장 된 O (n log n)로 낮추는 수정은 더 이상 Quicksort라고하지 않습니다. (예 : 인트로 소트).

나는 잘 알려진 모든 정렬 알고리즘의 이유를 궁금해합니다. 이것이 알고리즘의 작동 방식이 아니라 (보통) 얼마나 빠른지를 설명하는 "빠른"이라는 이름을 가진 유일한 것입니다. Mergesort는 데이터를 병합하기 때문에 호출됩니다. 힙을 사용하기 때문에 힙 정렬을 호출합니다. Introsort는 자체 성능을 모니터링하여 Quicksort에서 Heapsort로 전환 할시기를 결정하기 때문에 "Introspective"에서 이름을 가져옵니다. Bubblesort, Insertion sort, Selection sort 등 모든 느린 것들과 마찬가지로 모두 작동 방식에 따라 이름이 지정됩니다. 내가 생각할 수있는 유일한 예외는 "Bogosort"인데, 실제로 실제로 아무도 사용하지 않는 농담 일뿐입니다. Quicksort가 "파티션 정렬"또는 "피벗 정렬"과 같이 더 설명적인 것을 호출하지 않는 이유는 무엇입니까? 실제로 무엇을 설명합니까? 심지어 "먼저 여기에 도착"한 경우는 아닙니다. Mergesort는 Quicksort보다 15 년 전에 개발되었습니다. (위키 백과에 따라 각각 1945 년과 1960 년)

나는 이것이 프로그래밍 문제보다 역사 문제에 더 가깝다고 생각합니다. 나는 그것이 어떻게 이름을 얻었는지 궁금합니다. 좋은 마케팅입니까?


1
Quicksort가 개선 된 Timsort는 작동 방식에 따라 이름을 딴 것이 아니라 발명가의 이름을 따릅니다. flashsort 또는 introsort 와 같은 이름 은 알고리즘에 대해서도 많이 알려주지 않습니다.
vartec

What's in a name? that which we call a rose By any other name would smell as sweet;또는 빠르다. 게다가, O (N ^ 2) 로의 변성 가능성은 거의 발생하지 않으며, N LogN은 오늘날 우리가 더 빠른 알고리즘을 가지고 있음에도 불구하고 알고리즘에 매우 좋습니다. 게다가, 더 빠른 무언가가 나올 무렵, 너무 늦어서 모두가 이미 그것을 Quicksort라고 불렀습니다!
Ampt

1
@vartec Timsort는 실제로 Quicksort가 아닌 Mergesort에서 파생되었지만 다른 예외입니다. Introsort는 전체 알고리즘을 제공하지는 않지만 적어도 작동 방식을 설명합니다. "관찰 적"입니다. Flashsort 익숙하지는 않지만 각 요소를 어디에 있어야하는지 가장 잘 추측하기 위해 각 요소를 "플래시"하기 때문에 그 이름을 불렀습니다.
Darrel Hoffman

1
@Ampt 사실, Quicksort의 가장 기본적인 형태에서 O (N ^ 2) 경우는 데이터가 이미 정렬되었거나 거의 비슷한 일반적인 경우 일 가능성이 높습니다. 틀림없이, Median-of-3 또는 랜덤 피벗과 같은 이후의 개발은 훨씬 드물지만 이러한 이름은 여전히 ​​개선되지 않은 구현에 사용됩니다.
Darrel Hoffman

분명히, 그것은 가장 빠른 것보다 낫습니까?
JeffO

답변:


13

1962 년 정렬 알고리즘에 대한 연구는 오늘날만큼 발전하지 않았으며 컴퓨터 과학자 Tony Hoare 는 다른 알고리즘보다 빠른 새로운 알고리즘을 발견하여 Quicksort라는 논문 을 발표 했으며 논문이 인용 된대로 인용되었습니다.

초록 인용 :

컴퓨터의 랜덤 액세스 저장소에서 새로운 정렬 방법에 대해 설명합니다. 이 방법은 속도, 저장 경제성 및 프로그래밍 용이성에서 다른 알려진 방법과 매우 유리합니다. 내부 루프의 최적화에 유용 할 수있는 방법의 특정 개선 사항은 논문의 두 번째 부분에 설명되어 있습니다.


링크 된 PDF의 11 페이지에있는 각주는 1961 년에 출판 된 Quicksort에 대한 이전 논문이 있음을 시사합니다.이 논문은 논문 끝의 참고 문헌 섹션에도 언급되어 있습니다.
FrustratedWithFormsDesigner

1961, Algorythm 64 : Quicksort
Pieter B

나는 이것이 내가 얻을 수있는 정답에 가깝다고 생각한다. 그것은 더 최근의 잠재적으로 빠른 대안이 존재할 때 누가 그 이름을 지 었는지 설명 하지는 않지만 왜 그 이름을 사용하고 있는지 설명 하지 않습니다. 잘 읽으십시오-60 년대의 물건이 현대 기술에 여전히 적용되는 것을 보는 것은 흥미 롭습니다.
Darrel Hoffman

3
@DarrelHoffman 왜 이름이 바뀌었을까요? 알고리즘 Quicksort 호출의 단점은 모든 사람이 PartitionSort라고 부르는 데 드는 비용보다 어떤 시점에 있습니까?
prosfilaes

0

나는 그것이 발명가의 이름을 따서 원래 Hoare Sort라고 불렀지 만 Hoare가 영어로 창녀에 가깝게 들리면서 이름이 상당히 일찍 바뀌 었다고 생각합니다. 그들이 왜 다른 것 대신에 "빠른"을 선택했는지에 대해서는 확실하지 않습니다.


-1

나는 그것이 발명 당시에 그것은 모든 것보다 훨씬 빠르기 때문에 (또는 오히려 속도가 데이터의 종류에 크게 의존하고, 어떤 경우에는 다른 알고리즘이 퀵 정렬보다 훨씬 빠르기 때문에) 믿습니다. 거기에 알고리즘.

그래서 그렇습니다. 역사적입니다 (그러나 정확하게 그 역사를 모르겠습니다 ...)

그러나 그 이름에는 알고리즘의 힌트가 포함되어야한다는 데 동의합니다 ...

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.