728x90
    
    
  반응형
    
    
    
  퀵 정렬 알고리즘
퀵 정렬(Quick Sort) 알고리즘은 원소들 중에서 특정한 기준을 피봇(Pivot)라고 부르며
피봇보다 작은 원소는 왼쪽으로 큰 원소는 오른쪽으로 이동한다.
초기 세팅 변수 left = 0 , rigth = 배열 길이-1 , pivot = (left+right)/2 (피봇은 중앙값으로 세팅함)
| 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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | public class Quick_Sort {     public static void main(String[] args) {         int[] arr = { 10, 50, 80, 90, 70 };         quick_Sort(arr, 0, arr.length - 1);         output(arr);     }     private static void quick_Sort(int[] arr, int start, int end) {         int left = start;         int right = end;         /*pivot을 중앙 값으로 셋팅*/         int pivot = arr[(left + right) / 2];         do {             while (arr[left] < pivot) {                 left++;             }             while (arr[right] > pivot) {                 right--;             }             if (left <= right) {                 int temp = arr[left];                 arr[left] = arr[right];                 arr[right] = temp;                 left++;                 right--;             }         } while (left <= right);         if (start < right) {             quick_Sort(arr, start, right);         }         if (end > left) {             quick_Sort(arr, left, end);         }     }     private static void output(int[] arr) {         for (int i = 0; i < arr.length; i++) {             System.out.print(arr[i] + " ");         }     } } http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter | 
퀵 정렬 성능 향상 방법
- 작은 데이터 구간에는 삽입 정렬을 사용하여 퀵 정렬의 재귀의 깊이를 줄여 스택 사용을 줄여 준다
- 비 재귀 구현
- 난수(Random) 분할 > Worst 경우 인 정렬된 배열과 역순 배열일 때 문제를 해결하기 위해 난수로 선택한다
- 메디안 퀵 정렬(Median of Three QuickSort) - 세 값(처음, 가운데, 끝)의 중윗값을 찾아 Pivot으로 선택한다
728x90
    
    
  반응형
    
    
    
  '알고리즘' 카테고리의 다른 글
| [알고리즘] 삽입정렬 (Insertion Sort) Java Example (0) | 2019.06.16 | 
|---|---|
| [알고리즘] 선택정렬 (Selection Sort) Java Example (0) | 2019.06.16 | 
| [알고리즘] 합병정렬/병합정렬 (Merge Sort) Java Example (0) | 2019.06.16 | 
| [알고리즘] 이진탐색 (Binary Search) Java Example (0) | 2019.06.16 | 
| [알고리즘] 알고리즘(algorithm)이란 ? (0) | 2019.06.16 |