퀵 정렬(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
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바