数据结构与算法
betterAndroider
总结自己,一点一滴,用博客见证我的成长。
展开
-
复杂度nlog(n)之堆排序
1.简单的介绍堆排序是利用特殊二叉树大顶堆和小顶堆进行排序的算法,通过将数组转化成大顶堆(满足array[n]>array[2n+1]和array[n]>array[2n+2]这两个条件),然后将array[0]和array[array.length-1]交换,然后将无序区重新构建大顶堆。重复之前的步骤知道所有的都变成有序区。 步骤: 1.将数组变成大顶堆。 2.将array[0]和array原创 2016-07-22 15:50:50 · 535 阅读 · 0 评论 -
复杂度nlog(n)之归并排序
1.简单的介绍 平均时间复杂度 最好时间复杂度 最坏时间复杂度 空间复杂度 nlog(n) nlog(n) nlog(n) O(1) 2.核心的merge函数/** * 将分割开的两个数组合并,[start,middle]和[middle+1,end]这两个数组合并成为一个新的排序数组 * @param array * @param sta原创 2016-07-23 12:36:51 · 1334 阅读 · 0 评论 -
复杂度nlog(n)之快速排序
1.简单的介绍快速排序是利用分治和递归的思想进行的排序算法,每一次都将第一个元素置于它在数组中应该的位置(前面的数字比它小,后面的数字比它大),然后就把此数的前半段和后半段重复前面的操作。核心思想就是利用了一个paration这个函数。 平均时间复杂度 最好时间复杂度 最坏时间复杂度 空间复杂度 nlog(n) nlog(n) n2 log(n) 2.核心的parati原创 2016-07-20 21:26:26 · 1484 阅读 · 0 评论 -
稳定排序和不稳定排序
这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。 首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相转载 2016-08-17 12:01:55 · 229 阅读 · 0 评论