
数据结构与算法
秋天丽人湖的风
这个作者很懒,什么都没留下…
展开
-
堆排序
二叉堆:一组能够用堆有序的完全二叉树排序的元素,并在数组中按照层级存储。特点:用数组实现,第一个位置不存储元素,父节点比两个子节点都要大或者小(最大堆或最小堆)。实现代码比较简单,直接记录了。public class HeapSort { public static void sort(int[] a) { int len = a.length - 1; ...原创 2019-11-23 20:21:36 · 217 阅读 · 0 评论 -
快速排序
前面介绍了几种简单排序和归并排序,今天来介绍一种使用较广的排序方法:快速排序。public class QuickSort { public static void sort(int[] a) { sort(a, 0, a.length - 1); } private static void sort(int[] a, int lo, int h)...原创 2019-11-20 20:32:51 · 114 阅读 · 0 评论 -
归并排序
前面写了简单排序,平均时间复杂度是平方级的,这里介绍归并排序,比较次数在1/2NlgN到NlgN,空间复杂度O(n)。归并用的是分治递归思想,将大问题化为更小的子问题,直到数组个数为1时不能再分,此时两合并,四四合并。。。下面是自顶向下的归并排序实现:public class Merge { private static int[] temp; public st...原创 2019-11-17 22:05:06 · 123 阅读 · 0 评论 -
简单排序:冒泡,插入,选折排序及希尔排序
冒泡排序:将数组中的最大或最小值往一端移动,两层循环,每次比较和移动一个数字,比较和交换复杂度O(),可以理解为贪心算法。public static void sort(int[] a) { for (int i = 0; i < a.length; i++) { for (int j = 0; j < a.length - i - 1; ...原创 2019-11-14 22:15:15 · 132 阅读 · 0 评论