前言:
- “排序算法类模板”约定:将排序代码放在类
sort()
方法中,该类还将包含辅助函数less()
和exch()
。 - 为了使代码具有可扩展性,排序算法的原始数据需要实现Comparable接口。
1.排序类算法模板:
package sort;
public class Sort_mb {
public static void sort(Comparable[] a) {
// 这里就是各类排序算法的主代码块,如冒泡排序、插入排序、快速排序等
}
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;
}
private static void show(Comparable[] a) {
// 在单行中打印数据
for (int i = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
System.out.println();
}
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;
}
public static void main(String[] args) {
// 从标准输入读取字符串,将他们排序并输出
String[] a = In.readStrings();
sort(a);
show(a);
}
}
注意:
这里只是一个排序算法的模板,以后按照这个来写算法可以保证自己写代码的规范性。
2.排序成本模型
- 研究排序算法时,计算比较和交换的次数。对于不交换元素的算法,计算访问数组的次数。