//아카데미에서 공부한답시고 대충 만든거라 문제 많다는 것이 큰 문제...

#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

+ Recent posts