#include <stdlib.h>
#include <stdio.h>
void QuickSort(int* array, int n)
{
int start, end, left, right;
int pivot, t;
int* pBase;
int top = -1;
pBase = (int*)malloc(sizeof(int)*(2*n+2));
pBase[++top] = n-1;
pBase[++top] = 0;
while(top != -1)
{
start = pBase[top--];
end = pBase[top--];
if(end-start > 0)
{
pivot = start;
left = start + 1;
right = end;
while(1)
{
while(array[left] < array[pivot] && left<right)
++left;
while(right >= left && array[right] > array[pivot])
--right;
if(left >= right)
break;
t = array[left];
array[left] = array[right];
array[right] = t;
}
t = array[pivot];
array[pivot] = array[right];
array[right] = t;
pBase[++top] = right - 1;
pBase[++top] = start;
pBase[++top] = end;
pBase[++top] = right + 1;
}
}
free(pBase);
}
int main()
{
int DataSet[] = {6, 5, 4, 3, 2, 1};
int Length = sizeof(DataSet)/ sizeof(int);
int i=0;
QuickSort(DataSet, 6);
for(i=0; i<Length; i++)
printf("%d ", DataSet[i]);
puts("");
return 0;
}
'programing > Algorithm' 카테고리의 다른 글
다이나믹 프로그래밍 (0) | 2017.03.10 |
---|---|
네트워크 연결된 차 위치 정렬 (0) | 2016.12.06 |
움직이는 오브젝트의 순서 정하고 추월 체크 하기 (0) | 2016.12.01 |
허프만 코드 (0) | 2015.06.05 |
그래프 관련 알고리즘 (0) | 2015.06.04 |