算法
老朱.
业余时间喜欢写点技术博客,读点无用之书。想阅读我更多原创的非技术类文章,可以关注我的公众号 老朱的读书随想
展开
-
插入排序算法
插入排序的大概思路想想一下我们在玩斗地主时起牌的过程。手里的牌从小到大排列,然后每次摸一张新牌,都会直接插入到它相应的位置。这个过程比较类似插入排序。当然,算法都是要在特定的数据结构中进行的,排序一般在数组中进行。我们假设现在你的手中有13张牌,顺序混乱,我们要用一种固定的算法将这13张牌排好序,可以这样做:从第二张牌开始,跟第一张相比,如果第一张比较大,则将第一张放到第二张的位置,并把第二张放到原创 2017-02-27 22:18:00 · 323 阅读 · 0 评论 -
合并排序算法
合并排序利用分治法来完成排序。它的大致过程还可以用扑克牌来作比喻。假设有两堆扑克牌,各自是从小到大排好序的,如果我想对这两堆扑克牌排序,只需要每次取两堆牌上面较小的那张,一直取到其中一堆为0, 然后再依次把剩下的那堆牌取完,我们就把这两堆牌排好序了。但是,两堆排好序的扑克牌是怎么来的呢原创 2017-03-02 22:04:49 · 703 阅读 · 0 评论 -
堆排序算法
堆排序是一个非常出色的算法,在时间复杂度是`O(nlog(n))`,在空间上是就地排序。堆,又叫二叉堆,被是视为完全二叉树。堆可以分为两种,最大堆和最小堆,最大堆的意思是,每一个节点(除根节点以外)的值一定小于或等于它的父节点的值。最小堆的意思是,每个节点(除根节点外)的值一定小于或等于他的父节点的值。最大堆中的最大值一定位于它的根节点,而最小堆的最小值也一定位于它的根节点。原创 2017-03-05 22:11:59 · 345 阅读 · 0 评论 -
快速排序算法
快速排序算法通常是用于排序的最佳选择,尽管它在最坏情况下的运行时间是O(n²),但平均性能是O(nlgn),并且逻辑简单。 快速排序算法一共有两个子过程Partition(int[] array,int p,int r),它把数组的p至r部分就地重排,并返回一个q,并且使数组满足以下条件:q左边的数值全部小于或等于q的数值,q右边的数值都大于或等于q的数值。原创 2017-03-06 18:34:47 · 410 阅读 · 0 评论