- 博客(18)
- 资源 (5)
- 收藏
- 关注
原创 常用排序算法--快速排序
快速排序:(假设从小到大)基本思想:(1)选取一个基准数(本例为选取数组第start个元素),然后遍历数组,把小于基准数的放到数组的前面,大于基准数的放到数组的后边;(2)将基准数与(从后边数)第一个小于等于基准数交换,这样基准数的前面都小于基准数,基准数的后边都大于基准数;(3)然后递归调用本身,完成排序;时间复杂度:o(nlogn)空间复杂度:原地排序o(1)适用情
2013-08-07 09:35:59
675
原创 常用排序算法--归并排序
归并排序基本思想:先把数组拆分,直到分成都只含有一个元素的数组,这样两两合并,逐渐就可以得到已排序的字数组,继续合并直到合并成原来数组长度为止。时间复杂度:o(nlogn)空间复杂度:o(nlogn),每一轮合并都需要n空间,共需要logn轮(第一轮是1×n(需要n个数组,每个数组长度为1),第二轮是2×2/n,第三轮4×4/n,。。。最后一轮是n/2×2(需要两个数组,每个长度为
2013-08-07 09:34:34
633
原创 常用排序算法--堆排序
堆排序(以从小到大排序为例)基本思想:(1)首先构造最大堆,使最大数在堆顶;(2)然后把堆顶元素与最后一个元素交换,得到最大的数排在数组的最后一位;(3)再把交换后的堆顶元素构造最大堆,依次类推,直到最后只剩一个元素为止;堆排序将需要做两个步骤:-是建堆,二是排序(调整堆)。所以一般在小规模的序列中不合适,但对于较大的序列,将表现出优越的性能。时间复杂度:o(nlogn)
2013-08-05 08:46:00
628
原创 常用排序算法--希尔排序
希尔排序简单描述:希尔排序是对插入排序的改进,插入排序每次只能移动一位,速度较慢;通过对数据进行分组,可以实现跨越式移动。基本思想:(1)首先是步长的选择,首先是数组长度的一半,然后再每次减半最后直到步长为1;(2)按照步长对数据进行插入排序;时间复杂度:比简单插入排序(o(n^2))要好,是在o(nlogn)~o(n^2)之间,平均时间复杂度为o(n^3/2)空间复杂度:
2013-08-05 08:44:10
634
原创 常用排序算法--插入排序
直接插入排序(假设从小到大)基本思想:(1)从第2个数开始,与第1个数比较,若小于第一个数则交换,这样前两个数已排序好;(2)第三个数与第二个数比较,选择交换或不交换,然后第二个数再与第一个比较,选择交换或不交换;(3)以此类推,把当前数插入到之前已排序的序列中,直到处理完最后一个数为止;时间复杂度:o(n^2)空间复杂度:原地排序o(1)稳定性:稳定适用情况:对数
2013-08-04 11:41:41
478
原创 常用排序算法--简单选择排序
简单选择排序(假设从小到大)基本思想:(1)从第一个数开始遍历,找到最小元素,放到数组的第一个位置;(2)然后从第二个数开始遍历,找到最小元素,放到数组的第二个位置;(3)以此类推,遍历n-1次,即可完成数组排序;时间复杂度:o(n^2) 空间复杂度:原地排序 o(1)稳定性:不稳定(比如数组[5,6,5,1,8]经过一次遍历后[1,6,5,5,8]就改变了原来两个
2013-08-04 11:39:52
661
原创 常用排序算法--冒泡排序
最近在看几个基本的排序算法,于是便总结了一下,也算给自己当作备忘吧,如有错误的地方还请路过的批评指正。下面从最基本的冒泡开始。冒泡排序(假设从小到大)基本思想:是一个很简单的原地排序方法:从数组的第一个元素开始(这个元素就是当前的“泡”)向后遍历,如果后一个元素比当前的“泡大,那么当前的“泡”就变成了后一个元素;如果后一个元素比当前的“泡”小,那么交换“泡”和该元素的位置(
2013-08-04 11:35:36
779
转载 堆和栈的区别
出自:http://blog.youkuaiyun.com/hairetz/article/details/4141043一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) —
2013-04-09 21:12:10
378
转载 关于各种无法解析的外部符号问题的相应解决方案
出自:http://blog.youkuaiyun.com/enotswn/article/details/5934938在使用vs2008调试程序的过程中,经常会出现无法解析的外部符号问题,可能的原因有很多种,下面这些是我一年来积累的经验.仅供参考.考虑可能的原因:[0]出现无法解析可能是因为lib文件不正确,比如64位的编译配置,结果使用的是32位的lib包.[1]只写了类声明,但
2013-04-08 16:44:58
927
转载 三层架构的学习
为什么要学习三层? 一个项目的开发不可能是一蹴而就的,在系统的设计阶段我们不光要考虑系统的性能,还要考虑到代码的可扩展性和系统的后期维护,三层就很好的为我们解决了这个问题.让我们不必为了业务逻辑上的微小变化而迁至整个程序的修改,只需要修改商业逻辑层中的一个函数或一个过程;增强了代码的可重用性;便于不同层次的开发人员之间的合作,只要遵循一定的接口标准就可以进行并行开发了,最终只要
2013-01-21 10:41:57
444
原创 win7下利用vs2010编译librtmp静态库
一、编译openssl1、下载并安装ActivePerl下载地址:http://www.activestate.com/activeperl/downloads2、下载并安装nasm下载地址:http://www.nasm.us/pub/nasm/releasebuilds/2.07/win32/我用的是2.07版本,安装完成后把nasm添加到环境变量中。3、下载opens
2013-01-20 22:35:31
3430
1
原创 百度地图和google地图在开发中的微小比较
一、google地图与百度地图的一些微小差别由于最近同时使用了google地图和百度地图开发,所以也有一个小小的认识和了解,在这里就做一个微小的比较。这些都是我在实际应用中切身感受的,如有不对的地方还请看到这篇文章的大牛多多指教。1、google地图的经纬度坐标点latLng(x,y)是先纬度后经度;百度地图中Point(y,x)是先经度后纬度。2、google地图中的控件都是
2013-01-20 12:40:13
1046
原创 地图中多个marker时分别显示信息窗口的方法
一、问题: 在使用地图做地图应用的时候碰到这样一个问题,原本是想从数据库中取得一系列的位置(经纬度)信息,在地图上添加标注,同时点击标注能显示窗口信息,但在实际实现的过程中发现无论是百度地图的map.openInfoWindow,还是google地图的infowindow.open,在for循环展示信息的时候总是在第一个marker上显示信息窗口。二、解决方法:(以百度地图举
2013-01-20 10:05:27
9962
原创 百度地图API使用
前段时间由于某些原因,google地图加载的特别慢,于是乎就改为使用百度地图,如下是项目中用到的基本功能。一、加载基本地图var ZoomLevel=18;var map=new BMap.Map("mapBox");var MyPoint = new BMap.Point(116.3645,39.9673); map.centerAndZoom(MyPoint,ZoomLevel)
2013-01-20 09:59:23
1932
原创 Google maps API V3基本功能总结
这周任务完成一个地图和视频资源结合的demo,做完之后回顾总结一下所用的google map知识,写在这里就当作备忘吧。本文主要总结Google map API V3使用中最简单也是最常见的一些操作以及相关概念,如果需要更加详细的信息,请直接阅读Google提供的关于map的文档。google map api v3文档链接:英文版:https://developers.google.c
2012-12-31 15:36:13
2364
原创 getchar()的一点思考
【熊猫大叔 转载请注明出处:http://blog.youkuaiyun.com/pandaflyup】今天看书看到一道题:验证表达式getchar()!=EOF的值是0还是1。于是乎我就编写了下面一段程序:int main(){int c;while(c=getchar()!=EOF)//!=优先级大于=,验证后边式子的返回值 printf("不等于EOF时返回值:%
2012-12-27 20:18:53
586
原创 google maps V3 给多个marker添加infowindows信息
【熊猫大叔 转载请注明出处:http://blog.youkuaiyun.com/pandaflyup】参考:https://developers.google.com/maps/documentation/javascript/events?hl=zh-CN#EventArguments 其中的“在时间侦听器中使用闭包”部分。问题描述:在自己的网页中嵌入google map,可以添加多个
2012-12-27 20:06:13
2757
原创 Google maps V3控制地图的缩放和显示范围
【熊猫大叔 转载请注明出处:http://blog.youkuaiyun.com/pandaflyup】1、控制地图的缩放范围:实现起来很简单,设置一个最低和最高的缩放级别ZoomLevel,再添加一个监听缩放级别变化的事件即可,代码如下:function initialize() { var MinZoomLevel=16; var myLatlng =
2012-12-27 20:01:47
1399
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人