빠른 정렬의 여덟 종류의 20191209-

1. 빠른 정렬

알고리즘의 핵심 아이디어

 어레이의 수를 고려하여 왼쪽 및 오른쪽에서 왼쪽으로, 메모리 어레이의 배열 기준의 세트 수보다 적은을 설정하는 참조 번호로 제 정렬하도록 오른쪽 스토리지 배열 재귀 호출 시퀀스의 기준 세트 수보다, 좌우 각각이다. 다음과 같이 알고리즘의 논리는 다음과 같습니다

  1. 열 개수의 시작 번호의 참조 번호로 촬영.
  2. 대형 풀 카운트를 잘 넣어보다 과정을 분할, 그것은 또는의 수와 같은 11보다가 왼쪽에서 전체 넣어.
  3. 각 섹션은 숫자가 될 때까지, 그리고, 두 번째 단계는, 구간 반복 주위

01을 달성하기 위해 코드

# 부호화 = UTF-8 
DEF : 퀵 (도착, 시작, 종료)
     하는 경우 시작> = 단부 :
         리턴 도착의 
    로우 하이 =이 시작 단부 
    임시 =는 [로우], 언
     동안 로우 < 높음 :
         동안 로우 <고  [하이, 언 ]> = 온도 :  - = 1 개 
        도착 [저] = 도착 [고]
         동안 로우 <고  [로우, 언 <= 온도 :  + = 1 개 
        도착 [고] = 도착 [저]
         프린트( " 낮은 = %의 높은 = % S, 도착 = % S " % (로우, 하이, 도착)에) 
    , 언 [저] = 임시 
    퀵은 (도착 시작, 낮은) 
    퀵 (도착 낮은 +1 , 단말)
     반환 도착 
도착 = [3,2,1,5,6,4,3,9 ]
 인쇄 (퀵 (도착, 0, 렌 (도착) -1))

01 분석 수행

--- 끝 좌우 비교 기준 데이터가 낮은 위치에 배치되어 현재주기 마지막 로우 = 높은, 그리고 낮은 시작 횟수 --- 로우 + 1 좌측 재귀 호출에 비해 우측 바이 순서

  1. 시작 위치, 끝 지점 높음으로 낮은 점 : 정렬 된 배열 참조 번호로 첫 번째 숫자로 촬영, 두 개의 표지판을 제공
  2. 도착은 ​​[고] <기준은 상기 ARR [고]가 [저]에 할당로부터 도착하는 경우 도착 [고]> 기준, 고 = 1을 다시 낮은 시작하면, 목록의 높은 위치로부터 전방 스캔 스캐닝
  3. 도착 [저] <기준선 낮음 + = 1, 만일 도착 [저]> 참조 번호, ARR [저]가 [고]에 할당 도착하면 허리에서 시작 스캐닝 높은에서 다음 전방 스캔 시작
  4. 저 고 알려져 상기 단계를 반복이 도착 시간은 [낮은] 위치에 참조 번호의 위치 = 0 다음 로우 로우 렌 (도착)의 개수이다 퀵

02을 달성하기 위해 코드

DEF PythonQuickSort (도착)
     경우  하지 : 도착
         복귀 도착 
    임시 =이 [0], 언 
    왼쪽 = [(X) 에 대한 X  도착 [1 :] 만약 X <= 온도] 
    오른쪽 = [(X) 에 대한 X  도착 [1] 의 경우 X > 온도]
     복귀 PythonQuickSort (왼쪽)을 + [임시] + PythonQuickSort (오른쪽)
 인쇄 (PythonQuickSort (도착))

02 분석 수행

PythonQuickSort 코드 구현 (쓰기 코드 목록의 가변 길이) 파이썬 언어 기능을 기반으로, 코드와 주요 아이디어는 01와 동일한를 달성하기 위해

개요

시간 복잡도 : O입니다 (nlogn)

공간 복잡도 : 퀵 재귀 스택의 반복적 사용하므로, 공간 복잡도는 O임을 (logn)

안정성 : 그것은 불안정 정렬 알고리즘은 너무 빨리 종류, 같은 요소의 상대적 위치에 동일하게 보장 할 수 없습니다

추천

출처www.cnblogs.com/hyj691001/p/12013406.html