음 ... sorting 태그로 59 (현재 60) 개의 질문이 있지만 간단한 퀵 정렬은 없습니다.
반드시 수정해야합니다.
quicksort에 익숙하지 않은 분들을 위해 Wikipedia가 제공 한 분류가 있습니다.
- 배열에서 pivot 이라는 요소를 선택하십시오 .
- 피벗보다 작은 값을 가진 모든 요소가 피벗보다 먼저 나오고 피벗보다 큰 값을 가진 모든 요소가 그 뒤에 오도록 배열을 재정렬합니다 (동일한 값은 어느 쪽이든 갈 수 있음). 이 분할 후 피벗은 최종 위치에 있습니다. 이것을 파티션 작업이라고합니다.
- 위의 단계를 더 작은 값을 가진 요소의 하위 배열에 반복적으로 적용하고 더 큰 값을 가진 요소의 하위 배열에 별도로 적용하십시오.
규칙
규칙은 간단합니다.
- 선택한 프로그래밍 언어로 숫자 퀵 정렬을 구현하십시오.
- 피벗은 임의로 또는 3의 중간 값 (첫 번째, 마지막 및 중간 요소) 으로 선택해야합니다 .
- 귀하의 프로그램은 완전한 프로그램 또는 기능 일 수 있습니다.
- STDIN, 명령 행 인수 또는 함수 매개 변수를 사용하여 입력을 얻을 수 있습니다. 문자열 입력을 사용하는 경우 입력은 공백으로 구분됩니다.
- 입력에 10 진수 및 음수 값이 포함될 수 있습니다. 그러나 중복은 없습니다.
- STDOUT으로 출력하거나 기능에서 복귀하여 출력 할 수 있습니다.
- 내장 정렬 (또는 정렬 관련) 기능이나 표준 허점이 없습니다.
- 리스트는 임의의 길이 일 수있다.
보너스 # 1 : 길이 <= 5 인 목록 또는 하위 목록에서 삽입 정렬 을 사용 하여 속도를 높입니다. 보상 : -15 %.
보너스 # 2 : 언어가 동시성을 지원하는 경우 목록을 병렬로 정렬하십시오. 하위 목록에서 삽입 정렬을 사용하는 경우 최종 삽입 정렬이 병렬 일 필요는 없습니다. 내장 된 스레드 풀 / 스레드 스케줄링이 허용됩니다. 보상 : -15 %.
참고 : 세 사람의 중앙값은 일부 사람들을 혼란스럽게했기 때문에 여기에 (다시) Wikipedia의 설명이 있습니다.
피벗에 대한 파티션의 첫 번째, 중간 및 마지막 요소의 중앙값 선택
채점
이것은 code-golf 입니다. 기본 점수는 바이트입니다. 하나의 보너스를 받으면 그 숫자를 15 % 할인하십시오. 둘 다 얻은 경우 30 % 할인을 받으십시오. 그것은 실제로 판매 피치처럼 들립니다.
이것은 전체적으로 가장 짧은 답변을 찾는 것이 아니라 각 언어에서 가장 짧은 답변을 찾는 것입니다.
이제 리더 보드 스 니펫의 수치스러운 사본입니다.
리더 보드
이 게시물의 맨 아래에있는 스택 스 니펫은 답변 a) 언어 당 가장 짧은 솔루션 목록으로, b) 전체 리더 보드로 카탈로그를 생성합니다.
답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.
## Language Name, N bytes
여기서 N은 제출 크기입니다. 점수를 높이면 헤드 라인을 쳐서 오래된 점수를 유지할 수 있습니다. 예를 들어 :
## Ruby, <s>104</s> <s>101</s> 96 bytes
헤더에 여러 숫자를 포함하려는 경우 (예 : 점수가 두 파일의 합계이거나 인터프리터 플래그 페널티를 별도로 나열하려는 경우) 실제 점수가 헤더의 마지막 숫자인지 확인하십시오.
## Perl, 43 + 2 (-p flag) = 45 bytes
언어 이름을 링크로 만들면 스 니펫에 표시됩니다.
## [><>](http://esolangs.org/wiki/Fish), 121 bytes