노팅 - 정렬 종류와 구현(퀵정렬)
1. ToDo
- 그냥 문득 내용을 공부하면서 정리하고 싶어진 정렬 알고리즘
2. 종류
선택 정렬
삽입 정렬
버블 정렬
합병 정렬
퀵 정렬
3. 개념설명
- 글로 끄적..
병합정렬은 안정적인 정렬이라고 표현을 하면 이번 항목에서의 퀵정렬은 불안정한 정렬이라고 볼 수 있다. 시간 복잡도는 O(n^2)의 복잡도를 가지고 재귀함수를 이용한 알고리즘이다. 기준이 되는 타겟을 Pivot이라고 부르고 Pivot을 기본으로 크면 오른쪽, 작으면 왼쪽으로 이동한다.
- 그림으로 쓱삭..
이전과 같이 그림으로 최대한~ 간단히 설명해 보겠다.
* 1, 2, 3번의 과정을 반복하고 3번의 과정이 끝난 후 Pivot은 바뀐다.
4. 코드로 투닥투닥.. (C#)
static void Main(string[] args)
{
int[] array = { 7, 5, 4, 3, 8, 9, 10, 2, 6, 1 };
QuickSort(array, 0, array.Count() - 1);
Console.WriteLine();
foreach (int item in array)
{
Console.Write(item);
}
}
public static void QuickSort(int[] array, int left, int right)
{
if (left < right)
{
int pivot = Partition(array, left, right);
if (pivot > 1) QuickSort(array, left, pivot - 1);
if (pivot + 1 < right) QuickSort(array, pivot + 1, right);
}
}
public static int Partition(int[] array, int left, int right)
{
int pivot = array[left];
while (true)
{
while (array[left] < pivot) left++;
while (array[right] > pivot) right--;
if(left < right)
{
int temp = array[right];
array[right] = array[left];
array[left] = temp;
}
else
{
return right;
}
}
}
Author And Source
이 문제에 관하여(노팅 - 정렬 종류와 구현(퀵정렬)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@smat91/알고리즘-노팅-정렬-종류와-구현퀵정렬-2m4738jl저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)