数据结构与算法
Whitesoft
咳咳~在CSDN这个大牛云集的地方,我还是先不做自我介绍了……
展开
-
排序算法 之 选择排序
选择排序:最常见的排序算法之一,时间复杂度O(n^2),空间复杂度O(1),是不稳定的排序算法。原创 2015-10-29 15:29:52 · 2262 阅读 · 2 评论 -
二分查找的非递归实现
二分查找类似于生活中的翻书。比如一本书,页码已经是升序排好的。这个时候你要看第200页,随手一翻,发现是第100页,于是前面100页你就不用翻了,直接翻后面。这一翻,翻到了第300页,于是300页后面的你也不用翻了,继续在100~300页之间搜索第200页。随着翻的次数增多,搜索区间也就被逐步缩小,直到最后找到第200页为止。当然,也存在一种非常不幸的情况,就是有哪个熊孩子把第200页撕了,于是只好返回“404-找不到页面”。当然,计算机的二分查找算法和人类翻书之间还是有区别的。二分查找每次都会翻开待搜索部原创 2015-10-29 00:46:35 · 893 阅读 · 0 评论 -
单链表反转,要求空间复杂度O(1)
这是一道笔试题: 给你一个指向单链表表头的指针,要你把整个链表反转,并且空间复杂度为O(1)。链表节点结构和函数头已给出:struct LinkNode{ int data; LinkNode *next;};LinkNode* ReverseLink(LinkNode *head){ }原创 2015-10-28 12:43:03 · 6664 阅读 · 0 评论 -
排序算法 之 快速排序
快速排序,简称“快排”,我们以升序排序为例,其基本思想是: 1、在数组中选择一个基准值,将数组划分成两部分,要求左边的部分都比基准值小,右边的部分都比基准值大; 2、分别对左、右两部分执行第1步操作,直到无法再划分下去为止。 如果你有一定的编程基础,但之前又从未听说过快速排序,那么你现在应该会猜到:快速排序运用了分治思想,而代码的实现可以采用递乌龟的方式。嗯~我经常把“递归”说成是“递乌龟”…原创 2015-10-29 22:03:09 · 783 阅读 · 0 评论