写一个给你吧,给全分:)文件一:Sortable.java//Sortable.java /* a.compare(b){ * return a-b; * } */ public interface Sortable{ public int compare(Sortable b); }文件2:Sort.java (有2中排序方法shell_sort、quicksort) public class Sort{ //shell_sort public static void shell_sort(Sortable[] a){ int n=a.length; int incr=n/2; while (incr>=1) { for (int i=incr;i<n;i++) { Sortable temp=a[i]; int j=i; while((j>incr-1)&&(temp.compare(a[j-incr])<0)) { a[j]=a[j-incr]; j-=incr; } a[j]=temp;
你把所有的数据都放到set里面,然后对set进行排序就可了
Arrays.sort()
/* a.compare(b){
* return a-b;
* }
*/
public interface Sortable{
public int compare(Sortable b);
}文件2:Sort.java
(有2中排序方法shell_sort、quicksort)
public class Sort{
//shell_sort
public static void shell_sort(Sortable[] a){
int n=a.length;
int incr=n/2;
while (incr>=1)
{ for (int i=incr;i<n;i++)
{
Sortable temp=a[i];
int j=i;
while((j>incr-1)&&(temp.compare(a[j-incr])<0))
{
a[j]=a[j-incr];
j-=incr;
}
a[j]=temp;
}
incr/=2;
}
}
// quicksort
//low,high表示对数组哪个范围排序,全部排序就low=0,high=a.length-1public static void quicksort(Sortable[] a,int low,int high){
int pivot;
if (low<high){
pivot=partition(a,low,high);
quicksort(a,low,pivot-1);
quicksort(a,pivot+1,high);
}
}private static int partition(Sortable[] a,int low,int high){ int p_pos,tmp,i,j;
Sortable pivot;
p_pos=low;
pivot=a[p_pos];
for(i=low+1;i<=high;i++){
if(pivot.compare(a[i])>0){
p_pos++;
swap(a,p_pos,i);
}
}
swap(a,low,p_pos);
return p_pos;
}private static void swap(Sortable[] a,int i,int j){Sortable tmp=a[i];a[i]=a[j];a[j]=tmp;
}
}文件3:SortTest.java
//(具体的使用方法)class SortTest implements Sortable{
private int i;
public SortTest(int i){
this.i=i;
}
public int GetI(){
return i;
}
public int compare(Sortable b){
SortTest b1=(SortTest)b;
return i-b1.i;
}
public static void main(String[] args){
SortTest[] a=new SortTest[100000];
for (int i=0;i<a.length;i++){
a[i]=new SortTest((int)(a.length*Math.random()));
System.out.println(""+a[i].GetI());
}
//Sort.shell_sort(a);
Sort.quicksort(a,0,a.length-1);
for (int i=0;i<a.length;i++){
System.out.println(""+a[i].GetI());
}
}
}