冒择(选择)路(插入)兮(希尔)快(快速)归(归并)堆(堆排序)
2.int a[] = {2,4,8,3,7}
首先我们写了一个方法,对此数组进行了排序
3.如果我们需要对 float数组排序
那么我们再写一个方法对float数组进行排序
4.如果我们需要对 double数组排序
那么我们再写一个方法对double数组进行排序
5.现在我们要对Cat类比较大小,怎么比较呢?
我们想对Cat比较大小,怎么办呢?
想法很简单,我们可以分析Cat的属性,在方法中比较大小
不妨我们认识是按照高度比较大小
6.现在我们觉得很爽了,对好几种类型进行排序了,但是现在来只狗,
我们又需要对狗进行排序,那我们又得写个对狗进行狗进行排序了
这里就产生一个问题,我们的算法会因为事物的变化不断的发生变化
我们现在希望我们的算法不会因为事物的变化发生改变,我们我们就
自然想到面向对象的多态了,就是算什么我们不确定,Ok,
我们就把比较的对象抽象成一个接口,并且有相应的比较大小方法
现在我们就可以再面向接口的方式写我们的算法了,并且大小规则不
由我们指定。
可问题是,现在我们在猫中是比较高度比较大小,但是将来如果我们用猫的重量比较大小呢
现在就需要有这么一种方式,可以灵活的给出排序的规则
上面其实我们是利用了对象中的compareTo,我们现在可以想到
让compareTo通过比较器接口比较大小,具体的传入比较器的实现接口
9. @Override
public int compareTo(Cat o) {
return comparator.compare(this, o);
}
java.lang.Comparable<Cat>
JDK中compareTo(Cat o)传入的是泛型,我们如果实现接口的时候
就指定泛型,那么覆盖的方法自然就可以传入指定的类型了
关键在于compareTo中比较大小的写法也不能写死,比较大小的方法不写死,那就又要面向接口
编程了,首先有个接口,他有个比较大小的方法,我们在比较的时候利用这个接口比较大小就好了,
具体的比较交给实现就好了,这样我们队比较大小的算法进行了抽象,实现了多态和,增加了可扩展性