Algorithm
자료구조 :: 퀵 정렬 Quick sort (c/c++ 구현)
퀵 정렬 (Quick sort) 특정한 값(Pivot)을 기준으로 큰 숫자와 작은 숫자를 구분하자 '분할 정복' 알고리즘으로 평균속도가 O(N * logN) 이다. 퀵정렬에는 기준이 되는 값이 존재한다. 이때, 기준값을 피봇(pivot)이라고 부른다. 맨 앞의 숫자 4를 pivot으로 설정한다. i, j 포인터를 설정한다. i는 피봇을 제외한 처음 원소부터 피봇보다 큰 값을 찾는다. 피봇보다 큰 값은 8이다. j는 끝에서부터 피봇보다 작은 값을 찾는다. 피봇보다 작은 값은 1이다. 1과 8을 바꾼다. (i번째와 j번째를 바꾼다.) 다시 i는 피봇보다 큰값을, j는 피봇보다 작은 값을 찾는다. 찾는도중에 i > j 가 되었다. (엇갈렸다.) 이럴 경우는 i와 j를 바꾸는 것이 아니라 피봇과 j를 바꾼다. ..
2018. 4. 28. 23:34
최근댓글