排序就是对一串数组进行逻辑顺序重新排列的过程,即使现在库里面集成了全面的优秀排序算法,

但是我们学习算法实现也可以有助我们去比较各个算法的性能.

任何排序算法都是在树结构的基础上进行排序

假设一个数的高度为h,最好情况也为 2的h次方, 例如 16个点 = 2的4次方

h就是比较的次数,也就是4 = lg16 h= lgN(N为元素数量)

我们可以把排序算法大抵分为两类,一种是函数只需要自身不需要额外空间的原地排序.另一种则是,需要额外空间存储另一个数组副本的算法

然后我们为各类排序算法的API模板,定义一个模板

package sortexample;

/**

*

* @author Heaven

* 此为一个模板,是为了接下来各类排序算法的API模板

*/

public class SortExample {

public static void sort(Comparable<Object>[] a) {//进行排序的方法

}

public static boolean less(Comparable<Object> a,Comparable<Object> b) {//对元素进行比较

return a.compareTo(b) < 0;

}

private static void exch(Comparable<Object>[] a,int i,int j) {//进行交换

Object n =a[i];

a[i] = a[j];

a[j] = (Comparable<Object>) n;

}

private static void show(Comparable<Object>[] a) {

for (int i = 0; i < a.length; i++) {

System.out.println(a[i]+” “);

}//进行输出

}

public static boolean isSorted(Comparable<Object>[] a) {//测试是否排序

for (int i = 1; i < a.length; i++) {

if (less(a[i],a[i-1])) {

return false;

}

}

return true;

}

}

并且要求,测试的数据类型必须实现了Comparable接口

仓库的地址在

https://github.com/HeavenXin/Data_Structure_Sort

发表评论

邮箱地址不会被公开。 必填项已用*标注