정렬 알고리즘(0)-초기 설계
3332 단어 자바 알고리즘JAVA 정렬정렬 도구 클래스 구현
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 집합 표기 법 을 본 떠 서 뿌리 지 마 세 요~~내용 은 뒤의 것 에 따라 수정 할 것 이 니 좋 은 건의 가 있 으 면 많이 지적 해 주시 기 바 랍 니 다.