목차
** Quick Sort의 코드
** Worst Case (최악의 경우)
** Worst Case 입력 배열 코드
1. Step Count
1.1 Code
1.2 Step Count Table (Worst Case)
* How-To
1.3 Result
1.4 Graph
1.5 Comment
2. Big O
2.1 Analysis on Worst Cases
2.2 Graph
2.3 Comment
3. Time Measurement
3.1 Code
3.2 Result
3.3 Graph
3.4 Comment
4. Summary
** Worst Case (최악의 경우)
** Worst Case 입력 배열 코드
1. Step Count
1.1 Code
1.2 Step Count Table (Worst Case)
* How-To
1.3 Result
1.4 Graph
1.5 Comment
2. Big O
2.1 Analysis on Worst Cases
2.2 Graph
2.3 Comment
3. Time Measurement
3.1 Code
3.2 Result
3.3 Graph
3.4 Comment
4. Summary
본문내용
** Quick Sort의 코드
inline void SWAP(int &a, int &b) { int tmp; tmp=a; a=b; b=tmp; }
void QuickSort(int *ar, int num) {
int left, right, key;
if (num <= 1) return; // 구간이 1이면 정렬 끝
key=ar[num-1]; // 피봇 결정 : 맨 끝 요소
for (left=0,right=num-2;;left++,right--) {
while (ar[left] < key) { left++; }
while (ar[right] > key) { right--; }
if (left >= right) break; // 좌우가 만나면 끝
SWAP(ar[left],ar[right]);
}
SWAP(ar[left],ar[num-1]); // 기준값과 i위치의 값 교환
QuickSort(ar,left); // 왼쪽 구간 정렬
QuickSort(ar+left+1,num-left-1); // 오른쪽 구간 정렬
}
** Worst Case (최악의 경우)
퀵 정렬의 최악의 경우는 입력배열 a의 원소들이 이미 오름차순(또는 내림차순)으로 정렬이 되어있는 경우이다. 만약 a가 이미 오름차순으로 정렬이 되어 있다면, 피봇 원소를 제외한 a의 모든 원소들이 피봇(배열 a의 끝 원소)보다 크지 않다. 따라서 가장 상위 단계에서의 분할(partition)이 이루어지고 나면, 피봇보다 오른쪽에 있게 되는 a의 원소는 하나도 없다. 마찬가지로 각 단계에서의 분할은 실제로 이루어지지 않는다.
** Worst Case 입력 배열 코드
int* dataArray(const int size){
int *a; int i; a=new int[size]; //공간 할당
for (i=0;i
a[i]=i; //오름차순 소트된 상태
return a; //종료
}
1. Step Count
텍스트 23쪽에서 29쪽에 걸친 코드 예제들에 보면 비교, 할당, 실행문을 모두 고려하였다.
inline void SWAP(int &a, int &b) { int tmp; tmp=a; a=b; b=tmp; }
void QuickSort(int *ar, int num) {
int left, right, key;
if (num <= 1) return; // 구간이 1이면 정렬 끝
key=ar[num-1]; // 피봇 결정 : 맨 끝 요소
for (left=0,right=num-2;;left++,right--) {
while (ar[left] < key) { left++; }
while (ar[right] > key) { right--; }
if (left >= right) break; // 좌우가 만나면 끝
SWAP(ar[left],ar[right]);
}
SWAP(ar[left],ar[num-1]); // 기준값과 i위치의 값 교환
QuickSort(ar,left); // 왼쪽 구간 정렬
QuickSort(ar+left+1,num-left-1); // 오른쪽 구간 정렬
}
** Worst Case (최악의 경우)
퀵 정렬의 최악의 경우는 입력배열 a의 원소들이 이미 오름차순(또는 내림차순)으로 정렬이 되어있는 경우이다. 만약 a가 이미 오름차순으로 정렬이 되어 있다면, 피봇 원소를 제외한 a의 모든 원소들이 피봇(배열 a의 끝 원소)보다 크지 않다. 따라서 가장 상위 단계에서의 분할(partition)이 이루어지고 나면, 피봇보다 오른쪽에 있게 되는 a의 원소는 하나도 없다. 마찬가지로 각 단계에서의 분할은 실제로 이루어지지 않는다.
** Worst Case 입력 배열 코드
int* dataArray(const int size){
int *a; int i; a=new int[size]; //공간 할당
for (i=0;i
return a; //종료
}
1. Step Count
텍스트 23쪽에서 29쪽에 걸친 코드 예제들에 보면 비교, 할당, 실행문을 모두 고려하였다.
키워드
추천자료
- Taylor의 과학적 관리 원칙과 시간 연구에 관해
- 초등 3학년 수학 8단원 길이와 시간 세안 지도안
- 사람,시간,기법을 최상으로 활용하는프로젝트 관리
- 제 3 부 <시간의 재정렬 >
- 음악의 빠르기가 주관적 시간 지각에 미치는 영향
- 손전등 조립작업에 대한 시간연구
- 4학년 1학기 5단원 시간과 무게 수업 세안
- 성경의 도량형과 화폐 및 시간
- 빗면의 경사도에 따른 물체의 이동시간
- 실험4 오실로스코프-진폭,시간 및 주파수의 추정
- 사회복지조사의 분류’ 중 시간적 분류에 따른 횡단적조사와 종단적조사를 비교 설명하시오. ...
- 물리학실험-오차론, 반응시간
- [이동현상실험] 유출시간[Efflux Time] 실험
- 1오차론,반응시간 결과보고서
소개글