基本工具类(所有对象实现Comparable接口)
public class Basic {
public static boolean less(Comparable a,Comparable b) {
return a.compareTo(b) < 0;
}
public static void exchange(Comparable[] a,int i,int j) {
Comparable t = a[i];
a[i]=a[j];
a[j]=t;
}
}
less()用于比较两个对象的大小;
exchange()用于交换数组中制定的两个对象;
冒泡排序类
public class Bubble {
public static void sort(Comparable[] a){
for(int i=0;i<a.length;i++){
for(int j=1;j<a.length-i;j++){
if(!Basic.less(a[j-1], a[j])){
Basic.exchange(a, j-1, j);
}
}
}
}
}
选择排序类
public class Selection {
public static void sort(Comparable[] a) {
for(int i=0;i<a.length;i++){
int min = i;
for(int j=i+1;j<a.length;j++){
if(Basic.less(a[j], a[min])){
min = j;
}
}
Basic.exchange(a, i, min);
}
}
}
插入排序类
public class Insertion {
public static void sort(Comparable[] a){
for(int i=1;i<a.length;i++){
for(int j=i;j>0 && Basic.less(a[j], a[j-1]);j--){
Basic.exchange(a, j, j-1);
}
}
}
}
测试类
import java.util.ArrayList;
import java.util.List;
public class TestSort implements Comparable<TestSort> {
public char c;
public TestSort(char c) {
this.c=c;
}
@Override
public int compareTo(TestSort o) {
if(this.c<o.c){
return -1;
}else if(this.c==o.c) {
return 0;
}else {
return 1;
}
}
public static void main(String[] args){
String string = "zxcvbnmadhewijdijskiaqnhkjajndlsiqpoioweiu";
char[] chars = string.toCharArray();
List<TestSort> tList = new ArrayList<TestSort>();
for(char c:chars){
tList.add(new TestSort(c));
}
TestSort[] tSorts = tList.toArray(new TestSort[tList.size()]);
Selection.sort(tSorts);
Insertion.sort(tSorts);
Bubble.sort(tSorts);
for(int i=0;i<tSorts.length;i++){
System.out.print(tSorts[i].c);
}
}
}
排序结果
aaabcdddeehhiiiiiijjjjkklmnnnoopqqssuvwwxz