package algorithm.sort;
public abstract class Sort {
protected int[] arr;
protected Sort(int[] arr){
this.arr = arr;
sort();
}
protected abstract void sort();
public int[] getSort(){
return arr;
}
}
------------------------------------------------------------
* 과정 : 생성자를 통해 arr 변수 대입 -> sort() 진행.
getSort()를 통해서 arr 돌려주기.
abstract인 sort()는 각 정렬클래스에서 알맞게 제작.
이게 템플릿메소드 패턴인가???
아래는 버젼업
-----------------------------------------------------------
package algorithm.sort;
public abstract class Sort {
protected int[] arr;
private int swapCount = 0;
private int searchCount = 0;
protected Sort(int[] arr) {
this.arr = arr.clone();
sort();
}
protected abstract void sort();
public int[] getSort() {
return arr;
}
public int getSwapTimes() {
return swapCount;
}
public int getSearchTimes(){
return searchCount;
}
private void increaseSwapTime(){
swapCount++;
}
//
protected void increaseSearchTime(){
searchCount++;
}
protected void swap(int num, int num2) {
int temp = arr[num];
arr[num] = arr[num2];
arr[num2] = temp;
increaseSwapTime();
}
}
-------------------------------------
문제점 : searchCount 증가를 해야할경우 서브클래스에서 increaseSearchTimes()를 실행시켜 증가시켜야 함. 즉, 서브클래스에 메소드 실행을 깜박할경우 작동오류 발생..
'ALGORITHM' 카테고리의 다른 글
BUBBLE SORT, INSERTION SORT TEST (0) | 2011.04.14 |
---|---|
INSERTION SORT (0) | 2011.04.14 |
BUBBLE SORT (0) | 2011.04.14 |
BINARY TREE (0) | 2011.04.12 |
QUEUE (0) | 2011.04.11 |