摘要:
排序就是将一组数据按照某种逻辑顺序重新排序的过程。排序算法的目的就是将所有元素的主键按照这种逻辑顺序排列。 先编写一个排序算法的基类,后面其他算法可以直接继承: public class BaseSort { public BaseSort() { } public static void Sort 阅读全文
摘要:
快速排序是应用最广泛的排序算法,流行的原因是它实现简单,适用于各种不同情况的输入数据且在一般情况下比其他排序都快得多。 快速排序是原地排序(只需要一个很小的辅助栈),将长度为 N 的数组排序所需的时间和 N lg N 成正比。 1.算法 快速排序也是一种分治的排序算法。它将一个数组分成两个子数组,将 阅读全文
摘要:
什么是归并?即将两个有序的数组归并成一个更大的有序数组。 什么是归并排序?先将要排序的数组递归地分成两半分别排序,然后将结果归并起来。 归并排序能够保证将任意大小为 N 的数组排序所需的时间和 N logN 成正比;缺点是它所需的额外空间和 N 成正比。 1.原地归并的抽象 实现归并的一种直截了当的 阅读全文
摘要:
对于大规模乱序的数组,插入排序很慢,因为它只会交换相邻的元素,因此元素只能一点一点地从数组地一段移动到另一端。希尔排序改进了插入排序,交换不相邻地元素以对数组地局部进行排序,最终用插入排序将局部有序的数组排序。 希尔排序的思想是使数组中任意间隔为 h 的元素都是有序的。这样的数组成为 h 有序数组。 阅读全文