
排序算法
文章平均质量分 74
牧儿
Hope is a good thing,maybe the best of things.And no good thing ever dies!
展开
-
快速排序算法——java
思想:快速排序算法利用分治思想,通过一个基准元素将待排数组分成左右两部分,左边部分均比基准元素小,右边部分均比基准元素大,然后对左右两部分分别递归调用快速排序算法,最终实现排序的目的。 面试中较为常见的算法之一就是快速排序,快速排序在实际排序应用中也是最好的选择,因为它的平均性能非常好,它的期望复杂度为nlgn,另外,它还是一种稳定的排序方法。快速排序利用分治思想,将待排序数组分成左右两...原创 2018-03-31 18:40:48 · 427 阅读 · 0 评论 -
堆排序
堆排序堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。用简单的公式来描述一下就是:大顶堆:arr[i]>=arr[2i+1] && arr[i]>=arr[2i...原创 2018-08-13 12:16:38 · 179 阅读 · 0 评论 -
冒泡排序——java
冒泡排序:相邻元素两两比较,大的往后方放,第一次完毕后,最大值就出现在了最大索引处。同理,继续,即可得到一个排好序的数组。 规律:1. 两两比较,大的往后放。2. 第一次比较完毕后,下一次比较的时候就会减少一个元素的比较。3. 第一次比较,有0个元素不比 第二次比较,有1个元素不比 第三次比较,有2个元素不比4. 总共需要比较数组长度-1次。 代码如下...原创 2018-03-31 18:55:13 · 162 阅读 · 0 评论 -
选择排序——java
选择排序:从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处。其它的同理,即可以得到一个排好序的数组。规则:第一次是从0索引开始和其他的进行比较第二次是从1索引开始和其他的进行比较...最后一次是数组长度-2的元素和数组长度-1的元素比较代码如下: package 算法; public class Selec...原创 2018-03-31 19:00:16 · 203 阅读 · 0 评论 -
归并排序算法——java
什么是归并排序算法?答:归并排序算法就是利用分治思想将数组分成两个小组A,B,再将A,B小组各自分成两个小组,依次类推,直到分出来的小组只有一个数据时,可以认为这个小组已经是有序的了,然后再合并相邻的二个小组就可以了。这样通过先递归的分解数组,再合并数组,就完成了归并排序。面试题(腾讯):有两个有序数组a,b,现需要将其合并成一个新的有序数组。答: import java.u...原创 2018-04-07 18:34:11 · 295 阅读 · 0 评论 -
排序简答题总结
常见的排序算法有哪些?其中哪些是稳定的,哪些是不稳定的?答:冒泡排序、选择排序、直接插入排序、希尔排序、归并排序、快速排序、堆排序、基数排序、计数排序。其中,稳定的排序算法有:冒泡排序、直接插入排序、归并排序、基数排序、计数排序。不稳定的排序算法有:选择排序、希尔排序、快速排序、堆排序。排序算法的空间复杂度比较。答:O(1):冒泡排序、选择排序、直接插入排序、希尔排序、堆排序。...原创 2018-04-07 21:36:17 · 1042 阅读 · 0 评论 -
排序选择题总结
排序选择题总结常见的排序算法有哪些?其中哪些是稳定的,哪些是不稳定的?答:冒泡排序、选择排序、直接插入排序、希尔排序、归并排序、快速排序、堆排序、基数排序、计数排序。其中,稳定的排序算法有:冒泡排序、直接插入排序、归并排序、基数排序、计数排序。不稳定的排序算法有:选择排序、希尔排序、快速排序、堆排序。 希尔排序、简单选择排序和快速排序是不是稳定的排序算法?答:不...原创 2018-09-09 16:16:01 · 4079 阅读 · 1 评论