
排序算法
dayday_14056891
这个作者很懒,什么都没留下…
展开
-
归并排序
归并排序的核心思想是“分而治之“,与快速排序的思想一致。 归并排序的特点有: 归并排序的时间复杂度为O(nlogn),可以达到基于比较的排序算法的最优时间复杂度; 归并排序是一种稳定的排序算法,即相同元素在排序前后的相对位置保持不变; 归并排序是一种常用的外部排序算法; 归并排序需要O(n)的辅助空间,在同类算法中空间复杂度略高。 //归并排序的java实现 public class MergeSort { public static void main(String[] args) { int原创 2020-09-11 21:05:13 · 185 阅读 · 0 评论 -
堆排序算法
堆是一种完全二叉树,且具有以下性质: 大顶堆:每个节点的值都大于或者等于其左右孩子节点的值; 小顶堆:每个节点的值都小于或者等于其左右孩子节点的值。 堆排序利用了堆来设计排序算法,是一种选择排序算法,其最好、最坏和平均时间复杂度均为,该排序算法不稳定。 堆排序的基本思路: 1)首先建堆,升序排序选择大顶堆,降序排序选择小顶堆; 2)将堆顶元素与当前堆的最后一个元素进行交换,将最大(最小)元素沉到数组末尾,相当于从堆中删除当前最大(最小元素)。 3)重新调整当前堆...原创 2020-08-26 20:04:37 · 166 阅读 · 0 评论 -
快速排序算法
快速排序的基本思想是,以记录中某一个元素a为基准,使得一趟排序后的结果满足:元素a之后记录的关键字均不小于记录a,同时使其之前元素的关键字均不大于记录a。一趟快速排序后,元素a把待排序序列分为两个部分,这时只需要对前后两个部分再用相同的方法进行排序便可。 public class QuickSort { public static void main(String[] args) { int[ ] arr = new int[ ]{ 4, 5, 1, 6, 2, 7, 3, 8 };原创 2020-08-24 16:03:54 · 228 阅读 · 0 评论