- 博客(4)
- 资源 (1)
- 收藏
- 关注
原创 二分查找
经典的二分很简单,就不再说了。说一个变种,一个有序数列(1,2,2,3,4,5,6,7,8,9)分成两段, 把后面的一段放到前面变成部分有序(8,9,1,2,2,3,4,5,6,7)查找其中某个数字。这个题其实只是二分查找的一个变种,只需要在判断条件的时候,多判断一下就可以了。假设 x = 1(8,9,1,2,2,3,4,5,6,7) i ...
2018-12-24 19:07:18 57
原创 归并排序
归并排序的基本思想,就是采用分治的策略。先使子序列都有序,然后再将子序列归并成一个有序的序列。例如:一个原始序列为:(9,2,3,1,6,4,5,8,9,7)分成(9,2,3,1,6) (4,5,8,9,7)(9,2,3)(1,6) (4,5,8)(9,7)(9,2)(3) (1)(6) (4,5)(8) (9)(7)(9)(2)(3)(1...
2018-12-21 19:14:36 89
原创 堆排序
堆,分为大根堆和小根堆。大根堆是一颗父节点的值大于孩子节点的值的完全二叉树,小根堆反之。堆排序,是一种选择排序。它的最好最坏和平均时间复杂度均为O(nlgn)。堆排序是不稳定的排序。堆排序主要分为两个过程:1.建堆;2.调整堆。例:134253数组a[] = {1, 3, 4, 2, 5, 3}, 首先建一个堆。根据调整,使其满足大根堆,a[i] >= a[i*2+1] &&...
2018-04-16 15:07:35 83
原创 快速排序
快速排序,是对冒泡排序的一种改进,采用分治思想,使得其平均时间复杂度可以达到O(nlgn),最好情况也是O(nlgn),最坏情况,需要 n+(n-1)+(n-2)...+2+1= O(n2)。基本思想,就是找一个基准,然后找到这个基准的正确位置,即该基准左侧的值都小于等于它,右侧的值都大于等于它。然后再分别对该基准左侧的数列和右侧的数列执行以上操作。如 n = 10 , a[]={5, 8, 3,...
2018-04-13 15:54:31 93
C#基础与实例教程.doc )
2013-12-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人