菜鸟JAVA学习笔记之快速排序改进

      今天在研究快速排序的时候发现可以把只能排列整数的方法改进一下,实现可以排列字符串、小数,甚至对象,这当中就用到了Comparable这个接口。下面是改进后的例子:

   
public class Sort {
    public static  void insertionSort(Comparable[] a){
        int i,j,n=a.length;
        Comparable key;
        for(j=1;j<n;j++){
            key=a[j];
            i=j-1;
            while(i>=0&&a[i].compareTo(key)>0){
                a[i+1]=a[i];
                i--;
            }
            a[i+1]=key;
        }
    }

}


public class Test1 {    
    /**
     * @param args
     */
    public static void main(String args[]) {
        // TODO Auto-generated method stub
        Integer[] a={5,1,0,3,4,6,7,2,9,8};
        String[] b={"xingtai","chongqing","beijing","shijiazhuang","tangshan"};
        Double[] c={1.8,2.3,4.2,2.5,4.4,7.4};
        int i1=a.length,i2=b.length,i3=c.length;
        Sort.insertionSort(a);
        for(int i=0;i<i1;i++){
            System.out.print(a[i]+" ");
        }
        System.out.println();
        Sort.insertionSort(b);
        for(int i=0;i<i2;i++){
            System.out.print(b[i]+" ");
        }
        System.out.println();
        Sort.insertionSort(c);
        for(int i=0;i<i3;i++){
            System.out.print(c[i]+" ");
        }
        System.out.println();
        
    }


}

运算结果为:

0 1 2 3 4 5 6 7 8 9
beijing chongqing shijiazhuang tangshan xingtai
1.8 2.3 2.5 4.2 4.4 7.4

注意Comparable接口已经泛型化了,因此我们不必在新建一个接口,从以上程序看出可以直接引入CompareTo()方法,所有实现此接口的类必须覆盖此抽象方法,使之能比较这种类的对象x和另一个对象y间的大小:x>y返回1,x<y返回-1,x=y返回0。而包装类Integer、Character、Double、Float等以及字符串类String都已经实现了Comparable的类,系统已经为其实现了CompareTo方法,可以直接使用。

当比较的类型是个对象时:

public class Student extends Comparable<Student>{}类中要重写CompareTo的方法,具体比较方法按题意决定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值