07 2020 档案
摘要:排序就是将一组数据按照某种逻辑顺序重新排序的过程。排序算法的目的就是将所有元素的主键按照这种逻辑顺序排列。 先编写一个排序算法的基类,后面其他算法可以直接继承: public class BaseSort { public BaseSort() { } public static void Sort
阅读全文
摘要:优先队列 许多应用程序都需要处理有序的元素,但不一定要求它们全部有序,或是不一定要一次就将它们排序。很多情况下是收集一些元素,处理当前键值最大的元素,然后再收集更多的元素,再处理当前键值最大的元素。这种情况下,需要的数据结构支持两种操作:删除最大的元素和插入元素。这种数据结构类型叫优先队列。 这里,
阅读全文
摘要:快速排序是应用最广泛的排序算法,流行的原因是它实现简单,适用于各种不同情况的输入数据且在一般情况下比其他排序都快得多。 快速排序是原地排序(只需要一个很小的辅助栈),将长度为 N 的数组排序所需的时间和 N lg N 成正比。 1.算法 快速排序也是一种分治的排序算法。它将一个数组分成两个子数组,将
阅读全文
摘要:什么是归并?即将两个有序的数组归并成一个更大的有序数组。 什么是归并排序?先将要排序的数组递归地分成两半分别排序,然后将结果归并起来。 归并排序能够保证将任意大小为 N 的数组排序所需的时间和 N logN 成正比;缺点是它所需的额外空间和 N 成正比。 1.原地归并的抽象 实现归并的一种直截了当的
阅读全文
摘要:对于大规模乱序的数组,插入排序很慢,因为它只会交换相邻的元素,因此元素只能一点一点地从数组地一段移动到另一端。希尔排序改进了插入排序,交换不相邻地元素以对数组地局部进行排序,最终用插入排序将局部有序的数组排序。 希尔排序的思想是使数组中任意间隔为 h 的元素都是有序的。这样的数组成为 h 有序数组。
阅读全文
摘要:1.选择排序(冒泡排序) 升序 用第一个元素跟其他元素比较,如果该元素比其他元素,则交换,保证该元素是最小的。然后再用第二个元素跟后面其他的比较,保证第二个元素是除第一个最小的。依次循环,直到整个数组。 /// <summary> /// 选择排序 /// </summary> public cla
阅读全文