퀵 정렬(Quick Sort)

2015. 10. 26. 21:06·JAVA/기타



- 리스트 가운데서 하나의 원소를 고름(pivot 선정)

- pivot 앞에는 pivot보다 작은 값이 오고, pivot 뒤에는 pivot보다 큰 값들이 오도록 리스트를 둘로 분할한다.

- 분할된 두 개의 리스트에 대해 재귀함수를 통해 이 과정을 반복한다.

- 시간복잡도 : 최악 O(n^2), 평균 O(nlogn)




JAVA 소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class Quick {
    
    public void sort(int[] data, int l, int r){
        int left = l;
        int right = r;
        int pivot = data[(l+r)/2];
        
        do{
            while(data[left] < pivot) left++;
            while(data[right] > pivot) right--;
            if(left <= right){    
                int temp = data[left];
                data[left] = data[right];
                data[right] = temp;
                left++;
                right--;
            }
        }while (left <= right);
        
        if(l < right) sort(data, l, right);
        if(r > left) sort(data, left, r);
    }
    
    public static void main(String[] args) {
        
        int data[] = {66, 10, 1, 34, 5, -10};
        
        Quick quick = new Quick();
        quick.sort(data, 0, data.length - 1);
        for(int i=0; i<data.length; i++){
            System.out.println("data["+i+"] : "+data[i]);
        }
    }
}
Colored by Color Scripter
cs


'JAVA > 기타' 카테고리의 다른 글

Java - String(문자열) .isEmpty() vs .isBlank() 차이점  (0) 2022.12.15
Springboot에서 CircuitBreaker 설명 및 사용법  (0) 2022.11.29
삽입 정렬(Insertion Sort)  (5) 2015.10.26
선택 정렬(Selection Sort)  (5) 2015.10.26
버블 정렬(Bubble Sort)  (2) 2015.10.25
'JAVA/기타' 카테고리의 다른 글
  • Java - String(문자열) .isEmpty() vs .isBlank() 차이점
  • Springboot에서 CircuitBreaker 설명 및 사용법
  • 삽입 정렬(Insertion Sort)
  • 선택 정렬(Selection Sort)
99CORN
99CORN
1990.09.17
  • 99CORN
    넌 잘하고 있어
    99CORN
  • 전체
    오늘
    어제
    • -
      • IT
        • 잔기술
        • 네트워크
        • 면접 예상 질문
      • JAVA
        • 알고리즘
        • 기타
      • PHP
        • 기초
      • C#
        • 기초
      • 개발메모
        • 간단정리
        • WEB
        • 면접준비
        • 기타
      • 블랙홀
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • forl
  • 공지사항

  • 인기 글

  • 태그

    springboot + graphql
    web
    HTTP
    graphQL
    docker
    알고리즘
    c#
    Java
    stack
    SERVER 환경변수
    Queue
    php 배열관련 함수
    https status code
    기본문법 정리
    JavaScript
    sort
    JDK Dynamic Proxy
    JsonVue
    OpenFeign
    선택정렬
    vParam
    문자열 대표 클래스
    http 상태
    웹개발
    자바
    php
    격리수준
    console.table()
    Algorithm
    캐시스탬피드
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
99CORN
퀵 정렬(Quick Sort)
상단으로

티스토리툴바