《算法(第四版)》排序-----模板
来源:互联网 发布:ubuntu不显示输入法 编辑:程序博客网 时间:2024/06/04 08:06
本书对排序类算法有一个模板,包括了以下几种方法:
(1)sort():这个方法里面实现的就是排序的算法
(2)less():这个方法里是利用了Comparable接口里的compareTo方法,其中compareTo方法对于本对象与传入的比较对象小于,等于,大于,分别返回负数,0,正数
这个方法如果compareTo方法结果为负数就返回true,否则返回false
(3)exch():这个方法就是exchange,交换,用的传统方法,先找个temp,然后三者交换
(4)show():将数组里的元素进行打印
(5)main():
模板具体如下
public class Selection {public static <T> void sort(Comparable<T>[] a){//具体的排序算法实现代码}private static <T>boolean less(Comparable<T> v, Comparable<T> w){return v.compareTo((T) w) < 0;}private static <T> void exch(Comparable<T>[] a, int i, int j){Comparable<T> t = a[i];a[i] = a[j];a[j] = t;}private static <T> void show(Comparable<T>[] a){//在单行中打印数组for (int i = 0; i < a.length; i++) {System.out.print(a[i] + "");System.out.println();}}public static <T> boolean isSorted(Comparable<T>[] a){//测试数组元素是否有序for (int i = 0; i < a.length; i++) {if(less(a[i], a[i-1]))return false;}return true;}public static void main(String[] args) throws FileNotFoundException {// TODO Auto-generated method stub//String[] a = {"S","O","R","T","E","X","A","M","P","L","E"};sort(a);assert isSorted(a);show(a);}}观察之后可以发现:
排序算法的模板传入的参数规定了,都得是实现了Comparable接口的数据类型,这样就可以直接按照各自的数据比较习惯进行排序了
v.compareTo(w)<0这样的代码,如果v和w无法进行比较,或者两者之一有一个null,则v.compareTo(w)会抛出一个异常。
0 0
- 《算法(第四版)》排序-----模板
- (算法 第四版)排序算法类的模板
- 《算法(第四版)》排序-----选择排序
- 《算法(第四版)》排序-----插入排序
- 《算法(第四版)》排序-----希尔排序
- 《算法(第四版)》排序-----归并排序
- 《算法(第四版)》排序-----快速排序
- 《算法(第四版)》排序-----堆排序
- 《算法(第四版)》排序-----优先队列
- 算法 第四版 归并排序
- 算法(第四版)——02选择排序
- 算法(第四版)——03插入排序
- 算法(第四版)——04希尔排序
- 算法(第四版)——05归并排序
- 算法(第四版)——05快速排序
- 算法 第四版---2.2归并排序
- 算法 第四版 2.1.14 出列排序
- 算法第四版 排序算法的C语言实现
- 第5周项目1 三角形5(复制构造函数)
- 多态的典型例子(向上转型)
- 1015—P
- 内联函数
- Spring学习笔记(2)-Spring中bean的生命周期
- 《算法(第四版)》排序-----模板
- CodeForces 659C Tanya and Toys(贪心)
- 多态的实现
- SVM
- 二级指针作输入之内存模型三
- 安装Apache服务器
- hiahiahia
- 多态的典型例子
- linux多线程-----同步对象(互斥量、读写锁、条件变量)的属性