[자료구조] 정렬알고리즘 비교 분석

1. [자료구조] 정렬알고리즘 비교 분석.hwp
2. [자료구조] 정렬알고리즘 비교 분석.pdf
[자료구조] 정렬알고리즘 비교 분석
Step 1. 5.1.3절의 Extendable ArrayVector를 구현하고 반드시 이를 바탕으로 아래 정렬
알고리즘들을 구현할 것. 강의노트에 제시된 알고리즘을 변경하여 작성하는 것을
원칙으로 하며 보고서에 차이점을 기술할 것. 특히, Quick Sort인 경우 어떻게 pivot을
선정했는지 기술할 것.

전체 코드는 맨 마지막에 추가하기로 하겠습니다.
template [typename Object]
class ArrayVector{
에서 Object를
class data{
private:
int key;
char element;
public:
data(){};
data(int k, char elem){
key = k;
element = elem;
};
.....
...
위와같이 클래스 data를 선언하여 Object에 data를 사용하였습니다. class data에는 int key, char elem을 선언하여 key값과 문자를 저장할 수 있도록 하여 구현하였습니다.

먼저 메인에서 아래와같이 data타입 ArrayVector를 포인터로 선언하고 동적할당을 하였습니다. 이는 데이터의 개수(크기)가 커지면 이를 처리할 공간(스택)이 부족하게 되어 스택 오버플로우가 발생하게 됩니다. 이를 방지하기위해 동적할당을 하여 힙에 데이터를 저장하도록 하였습니다.
ArrayVector[data] *DS1, *DS2, *DS3;
DS1= new ArrayVector[data][DATASETNUM];

void checktime(ArrayVector[data] *e) 함수에서도 마찬가지로 data타입의 포인터변수e를 매개변수로 받아서 이를 사용합니다. 이 함수에서 아래의 변수들을 선언하였는데 이는 하나의 데이터로부터 여러개의 변수에 동일한 data을 넣어주기 위해서입니다.
ArrayVector[data] *bubble;
ArrayVector[data] *insert;
ArrayVector[data] *select;
....