//아카데미에서 공부한답시고 대충 만든거라 문제 많다는 것이 큰 문제...
#include <iostream>
#include <ctime>
using namespace std;
int Arrary[21] = { 5, 3, 6, 8, 4, 2, 1, 7, 10, 9 , 12, 15, 13, 11, 14, 16, 18, 17, 19, 21, 20};
void Quick_Sort(int arrary[], int L_index, int R_index);
int partition(int arrary[], int L_index, int R_index);
void Timer_Start();
clock_t Time_Stop();
clock_t CurTime, CheckTime;
void main()
{
/*int i;*/
Timer_Start();
/*cout << "현재 저장된 데이터의 순서\n";
for (i = 0; i < 21; i++)
{
cout << i + 1 << "번째 : " << Arrary[i] << endl;
}*/
Quick_Sort(Arrary, 0, 20);
/*cout << "퀵 정렬 후 저장된 데이터의 순서\n";
for (int j = 0; j < 21; j++)
{
cout << j + 1 << "번째 : " << Arrary[j] << endl;
}*/
cout << Time_Stop() << endl;
}
//이거는 웹에서 찾은 예제를 내가 이해하기 쉽게 약간 바꾼거. 그닥 차이는 없다.
void Quick_Sort(int arrary[], int L_index, int R_index)
{
int point;
if (L_index < R_index)
{
point = partition(arrary, L_index, R_index);
Quick_Sort(arrary, L_index, point - 1);
Quick_Sort(arrary, point + 1, R_index);
}
}
int partition(int arrary[], int L_index, int R_index)
{
int left = L_index, right = R_index; int point = arrary[L_index], temp;
while (left<right)
{
while (left<=R_index && arrary[left] < point)
{
left++;
}
while (right>=L_index && arrary[right] > point)
{
right--;
}
if (left < right)
{
temp = arrary[left];
arrary[left] = arrary[right];
arrary[right] = temp;
}
}
temp = arrary[left];
arrary[left] = arrary[right];
arrary[right] = temp;
return right;
}
void Timer_Start()
{
CheckTime = clock();
}
clock_t Time_Stop()
{
CurTime = clock();
return ((CurTime - CheckTime) / 1000);
}
'[C], [ C++]' 카테고리의 다른 글
링크드 리스트 예제 (0) | 2015.05.28 |
---|---|
선택 정렬 - Selection Sort (0) | 2015.05.28 |
삽입 정렬 - Insert Sort (0) | 2015.05.28 |
버블 정렬(Bubble Sort) (0) | 2015.05.28 |
이진 검색 트리 알고리즘2 (0) | 2015.05.28 |