排序
什么是排序
排序就是将一组对象按照某种逻辑顺序重新排列的过程。
排序在实际项目中的用例
(1) 信用卡账单中的交易是按照日期排序的;
(2)现在几乎所有的O2O应用中都会存在“按范围搜素、离我最近、显示距离”等等基于
位置的交互,距离由近到远排序。
學習排序算法的实际意义
(1)对排序算法的分析将有助于你全面裂解,比较算法性能
(2)类似的技术也能有效解决其他类型的问题
(3)排序算法常常是我们解决其他问题的第一步
Comparable接口
此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。
排序算法类的模板
public class Example {
/**
* 排序代码放在sort方法中
*
* @param a
*/
public static void sort(Comparable[] a) {
}
/**
* 对元素进行比较
*
* @param v
* @param w
* @return
*/
private static boolean less(Comparable v, Comparable w) {
return v.compareTo(w) < 0;
}
/**
* 将元素交换位置
*/
private static void exch(Comparable[] a, int i, int j) {
Comparable t = a[i];
a[i] = a[j];
a[j] = t;
}
/**
* 排序算法是否成功,确认排序后数组元素都是有序的
*
* @param a
* @return
*/
public static boolean isSorted(Comparable[] a) {
for (int i = 1; i < a.length; i++) {
if (less(a[i], a[i - 1])) {
return false;
}
}
return true;
}
}
以上的排序算法框架,我们都会为这样一个类实现一个sort()方法并将Example改为算法的名称。这段代码使我们的排序方法适用于任意实现了Comparable接口的数据类型。