Breath everything
Home
  • 분류 전체보기 (133)
    • 취미 (29)
    • 영어 (30)
      • Daily 영어표현 (24)
      • TOEIC_OPIC (6)
    • IT (47)
      • 따로 공부 (13)
      • 외부강의 (3)
      • 자료구조 & 알고리즘 (20)
      • 백준 (9)
      • 프로그래머스 (2)
    • 자격증 (5)
    • 기타 (19)
    • 복기 (1)
      • 코딩테스트 (1)
Home
  • 분류 전체보기 (133)
    • 취미 (29)
    • 영어 (30)
      • Daily 영어표현 (24)
      • TOEIC_OPIC (6)
    • IT (47)
      • 따로 공부 (13)
      • 외부강의 (3)
      • 자료구조 & 알고리즘 (20)
      • 백준 (9)
      • 프로그래머스 (2)
    • 자격증 (5)
    • 기타 (19)
    • 복기 (1)
      • 코딩테스트 (1)
블로그 내 검색

Breath everything

이것 저것

  • IT/자료구조 & 알고리즘

    [알고리즘] 퀵 정렬(Quick Sort) (Python)

    2021. 8. 4.

    by. ziasu

    반응형

    1. 기본 원리

    • 기준점(pivot) 기준으로 기준점보다 작은 데이터는 왼쪽으로, 기준점보다 큰 데이터는 오른쪽으로 보내는 함수 작성
    • 보통 기준점(pivot)은 범위에서 맨 앞에 있는 것으로 선택
    • 기준점(pivot) 왼쪽과 오른쪽 범위를 재귀 함수로 다시 정렬해주는 프로세스 반복
    • 모든 데이터가 [기준점(pivot), 왼쪽, 오른쪽] 쌍으로 분리가 될 때까지 반복
    • 분리되어 각각의 범위가 정렬된 것들을 다시 병합

     

    2. 코드 구현 전 생각정리

    • 3 5 1 7 4  (3이 기준점)
    • 1 3 5 7 4  (5가 기준점)
    • 1 3 4 5 7
    • Python list를 활용해서 재귀함수를 통해 정렬된 list를 이어나가면 어떨까?

     

    3. 코드 구현

    def qsort(data):
        if len(data)<=1:
            return data
        
        left, right = list(), list()
        pivot = data[0]
        
        for index in range(1,len(data)):
            if pivot < data[index]:
                right.append(data[index])
            else:
                left.append(data[index])
                
        return qsort(left) + [pivot] + qsort(right)

     

    4. 시간 복잡도

    일반적일 때: O(nlogn) -> 단계가 logn만큼 생성, 각 단계별로 n만큼 비교하는 과정

    최악일 때: O(n^2) -> 모든 데이터를 분석해야 할 때 ex) 1 2 3 4 5

    반응형
    저작자표시 (새창열림)

    'IT > 자료구조 & 알고리즘' 카테고리의 다른 글

    [알고리즘] 이진 탐색(Binary Search) (Python)  (0) 2021.08.08
    [알고리즘] 병합정렬(Merge Sort) (Python)  (0) 2021.08.07
    [알고리즘] 재귀 용법(Recursive Call) (Python)  (0) 2021.08.04
    시간 복잡도(Time Complexity) & 공간 복잡도(Space Complexity)  (0) 2021.07.30

    댓글

    관련글

    • [알고리즘] 이진 탐색(Binary Search) (Python) 2021.08.08
    • [알고리즘] 병합정렬(Merge Sort) (Python) 2021.08.07
    • [알고리즘] 재귀 용법(Recursive Call) (Python) 2021.08.04
    • 시간 복잡도(Time Complexity) & 공간 복잡도(Space Complexity) 2021.07.30
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
ziasu

티스토리툴바