|
|
|
|
알고리즘 - 합병정렬, 퀵정렬
|
|
|
|
1. 프로그램 소스
합병정렬(링크를 사용하는) : lec4-5, 퀵정렬(순환버전) : lec5-1 사용
CompareMeasure.java
package exercise_2;
public class CompareMeasure {
public void mergeSort(int n){ // 합병정렬 method (lec 4-5)
int arrSize = n ; // 배열의 크기
int arr[] = new int[arrSize+1];
for(int i=1; i[= arrSize; i++)
arr[i] = (int)(java.lang.Math.random()*(n-1)); //테스트 데이터 생성
MergeSortClass m = new MergeSortClass(arr, arrSize) ; // 합병정렬 클래스를 생성
arr = m.MergeSortCall2(); // 합병정렬을 호출
}
public void QuickSort(int n){ // 퀵정렬 method 순환버전 (lec 5-1)
int arrSize = n ; // 배열의 크기
int arr[] = new int[arrSize+2];
arr[arrSize+1] = Integer.MAX_VALUE;
/*중추키가 가장 큰 경우 배열범위를 벗어나게 되는데
그 현상을 방지하기 위해 맨 마지막에 더미값을 넣어둠
*/
for(int i=1; i[= arrSize; i++)
arr[i] = (int)(java.lang.Math.random()*(n-1)); //테스트 데이터 생성
// 중간값 규칙
int temp=0;
if(arr[arrSize/2][arr[arrSize-1]){
if(arr[1][arr[arrSize/2]){ //arr[arrSize/2] 이 중간값일때
.... |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|