정렬 알고리즘(0)-초기 설계

최근 에 복습 을 해 보 니 기본 알고리즘 을 쓸 줄 알 지만 응용 에 있어 서 는 좋 지 않 습 니 다.즉,어디서 어떤 무공 을 사용 하 는 것 이 가장 적합 한 지 모 르 겠 습 니 다!그리고 도구 류 를 쓰 려 면 자주 사용 하 는 것 에 대해 정렬 을 한 다음 에 그들의 효율 문 제 를 계산 할 수 있 습 니 다.
 
1.우선 나 는 인 터 페 이 스 를 정의 했다.
/**
 *     
 * @author @Ran
 *
 */
public interface Sort {
	//       
	public  <T extends Comparable<? super T>>  T[] sort(T[] t);
	//      
	public long getCount();
	//      
	public long getCostTime();
	//     ,    
	public <T extends Comparable<? super T>>  T[]  sort(Sort s,T[] t);
}

 
2.그리고 추상 적 인 실현 류(~~)를 썼 다.이 곳 은 집합 프레임 워 크 를 본 떠 서 쓴 것 이다)
/**
 *        
 * @author @Ran
 *
 * @param <T>
 */
public abstract  class AbstractSort<T> implements Sort{
	//        
	protected transient long count = 0;
	//          
	protected transient long cost = 0;
	
	public long getCount(){
		return count;
	}
	public long getCostTime(){
		return cost;
	}
	
	//     
	public <T extends Comparable<? super T>>  T[]  sort(Sort s,T[] t){
		 long beginTime = System.currentTimeMillis();
		 s.sort(t); 
		 cost = System.currentTimeMillis() - beginTime;
		 return t;
	}
	
	//     
	public <T extends Comparable<? super T>>  T[] swap(T[] t,int i,int j){
		if(i != j){
			T tem = t[i];
			t[i] = t[j];
			t[j] = tem;
			count++;
		}
		return t;
	}
	
	//    
	public <T extends Comparable<? super T>>  int commpare(T[] t,int i,int j){
		int flag = t[i].compareTo(t[j]);
		if ( flag > 0) {
			swap(t,i,j);
		}
		return flag;
	}
	//      ,         
	public <T extends Comparable<? super T>> void setValue(T[] t,int i,int j){
		t[i] = t[j];
		count ++;
	}
	
	public <T extends Comparable<? super T>> void setValue(T[] t,int i,T value){
		t[i] = value;
		count ++;
	}
	@Override
	public String toString() {
		return "count:"+count+",cost:"+cost;
	}
}

 
 
3.우 리 는 자주 사용 하 는 알고리즘 을 조작 할 수 있다.만약 에 내 가 거품 정렬 을 실현 했다 고 가정 하면 Bubble
public class Test {
	public static void main(String[] args) {
		//         ASSIC  ,        ,  a=97,        
		 String[] t = new String[]{"4","3","2","7","1","f","ad","asd","5"};
		 Sort s = new Bubble();
                 //         ,     sort
		 s.sort(s,t);
		 System.out.println("     :"+s.getCount());
		 System.out.println("     :"+s.getCostTime());
		 System.out.println("     :"+Arrays.toString(t));
		 System.out.println(s.toString());
	}
}

 
소결:
     1.여 기 는 기본 정렬 만 조작 하고 자체 테이프 의 Comparable 인 터 페 이 스 를 이용 했다.물론 후기 에 우 리 는 확장 하고 지원 이 많 을 것 이다.             정렬 방식.기본 부터 끝내!
     2.여 기 는 JAVA 집합 표기 법 을 본 떠 서 뿌리 지 마 세 요~~내용 은 뒤의 것 에 따라 수정 할 것 이 니 좋 은 건의 가 있 으 면 많이 지적 해 주시 기 바 랍 니 다.
     

좋은 웹페이지 즐겨찾기