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
Posted by sangmooni
,