티스토리 뷰
quick sorting.
quick sorting은 평균시간복잡도의 시간복잡도를 가진 정렬 알고리즘으로
버블정렬과 같이 시간복잡도 의 비효율적인 성능시간을 개선하기 위해 사용한다.
기본적으로 이전에 포스팅 했던 binary search와 같이 분할정복법을 이용하여 정렬한다.
큌정렬 방식은 기본적으로 값의 기준이 되는 pivot을 정하여 pivot을 기준으로 큰값은 오른쪽,
작은값은 왼쪽으로 이동시키며 좌,우를 분할하여 정렬한다. 정렬이 끝나면 pivot의 기준을 바꾸어
다시 좌우로 정렬하는 식의 동작을 반복하여 정렬한다.
cpp code
#include <iostream> #define ARRAY_SIZE 10 int q_sort(int *list , int left, int right); int main() { int list[ARRAY_SIZE] = { 3, 5, 7, 1, 10, 2, 4, 9, 8, 6}; int left = 0; int right = ARRAY_SIZE-1; q_sort(list, left, right); std::cout << "RESULT : "; for(int i=0; i < ARRAY_SIZE; i++){ std::cout << list[i] << " "; } std::cout << std::endl; return 0; } int q_sort(int *list , int left, int right){ int pivot = list[left]; int init_left = left; int init_right = right; while( left < right){ while( (pivot <= list[right]) && (left < right) ){ right--; } if( list[left] != list[right] ){ list[left] = list[right]; } while( (pivot >= list[left]) && (left < right) ){ left++; } if (left != right) { list[right] = list[left]; right--; } } list[left] = pivot; for(int i=0; i < ARRAY_SIZE; i++){ std::cout << list[i] << " "; } std::cout << std::endl; if( init_left < left ){ q_sort( list, init_left, left-1 ); } if( init_right > left ){ q_sort( list, left+1, init_right ); } return 0; }
실행결과
2 1 3 7 10 5 4 9 8 6
1 2 3 7 10 5 4 9 8 6
1 2 3 7 10 5 4 9 8 6
1 2 3 6 4 5 7 9 8 10
1 2 3 5 4 6 7 9 8 10
1 2 3 4 5 6 7 9 8 10
1 2 3 4 5 6 7 9 8 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
RESULT : 1 2 3 4 5 6 7 8 9 10
'Developer' 카테고리의 다른 글
[Bigdata#2] hadoop + hive를 이용한 데이터 분석 예제 (0) | 2014.10.15 |
---|---|
[Hadoop] Pseudo-distributed mode Installation Guide. (0) | 2014.10.08 |
Tibero 5 설치 가이드 (2) | 2014.09.11 |
[알고리즘 트레이닝 1일차] binary search Algorithm (이진검색) (0) | 2014.08.13 |
[ubuntu] 12.10 kernel upgrade (0) | 2014.07.30 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 영작
- it
- hdfs
- 조동사
- 가정법
- 영문법
- 비지니스 영어
- NGINX
- 베트남
- JBOSS
- PostgreSQL
- ubuntu
- hadoop
- maven
- nodejs
- 여행
- Business English
- 다낭
- mongoDB
- 해외여행
- 대명사 구문
- 도덕경
- 비교구문
- redis
- 스페인 여행
- Python
- Python Django
- AWS
- k8s
- memcached
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함