- 博客(3)
- 资源 (2)
- 收藏
- 关注
原创 快速排序改进
快速排序平均复杂度为O(nlgn), 最坏情况为O(n^2),即数组已经有序或大致有序的情况下,每次划分只能减少一个元素,快速排序将不幸退化为冒泡排序,所以快速排序时间复杂度下界为O(nlogn),最坏情况下为O(n^2) 1.如果在排序时选取最后一个元素为基准,则可以通过以下方法来避免划分的不平衡。 int Patition(int *pnArr, int nLeft, int nRigh
2016-03-30 22:05:01 1048
原创 旋转数组中的最小数字
旋转数组中的最小数字:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。 例如:数组 {3,4,5,1,2} 为 {1,2,3,4,5} 的一个旋转,该数组的最小值为1. 直观的解法:从头到尾遍历数组一次,我们就能找到最小的元素,时间复杂度为O(n)。 利用旋转数组的特性:1.旋转数组划分为两个排序的子数组,而且前
2016-03-29 20:59:34 848
原创 堆排序
1.堆 1.堆的基本性质及操作 2.堆的维护 3.建堆 4堆排序 C-算法-堆的基本操作-时间复杂度-堆排序完整源码 堆排序集合了归并排序的优点:时间复杂度位O(nlgn) 插入排序的优点:具有空间原址性(任何时候只需要常数个额外的元素空间存储临时数据) 堆是一个数组,可以被看成是一个近似的完全二叉树。堆上的每个节点对应数组中的一个元素。除了最底层外,该树是完全充满的。这样给定一个结点的下标 i,我们很容易计算得到
2016-03-28 20:24:37 529
SQLiteExpertPers
2016-04-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人