算法与数据结构
文章平均质量分 75
我就是多啦a梦
这个作者很懒,什么都没留下…
展开
-
数组与链表的对比
特点对比:1、存取方式上,数组可以顺序存取或者随机存取,而链表只能顺序存取;2、存储位置上,数组逻辑上相邻的元素在物理存储位置上也相邻,而链表不一定;3、存储空间上,链表由于带有指针域,存储密度不如数组大;4、按序号查找时,数组可以随机访问,时间复杂度为O(1),而链表不支持随机访问,平均需要O(n);5、按值查找时,若数组无序,数组和链表时间复杂度均为O(1),但是当数组有序转载 2016-03-02 11:30:08 · 538 阅读 · 1 评论 -
最长公共子序列求解:递归与动态规划方法
最长公共子序列求解:递归与动态规划方法 在做OJ题目的时候,经常会用到字符串的处理。例如,比较二个字符串相似度。这篇文章介绍一下求两个字符串的最长公共子序列。 一个字符串的子序列,是指从该字符串中去掉任意多个字符后剩下的字符在不改变顺序的情况下组成的新字符串。 最长公共子序列,是指多个字符串可具有的长度最大的公共的子序列。 (1)递归方法求最长公共子序列的长度转载 2016-07-28 15:28:20 · 515 阅读 · 0 评论 -
二分查找C++实现
#include #include #include using namespace std;int binSearch(int A[], int length, int key){ int L = 0, R = length - 1; while (L <= R){ int M = (L + R) / 2; if (A[M]>key) R = M-1; else i原创 2016-07-25 22:06:34 · 496 阅读 · 0 评论 -
C++建立及销毁链表
struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; void createList(ListNode* &pHead){ pHead = new ListNode(-1); int length = 5; ListNode *p = pHead;原创 2016-07-13 10:39:17 · 1759 阅读 · 0 评论 -
并查集C++实现
#include using namespace std;class UF { //cnt is the number of disjoint sets. //id is an array that records distinct identity of each set,when two sets are merged ,their id will be same. //sz原创 2016-07-23 14:52:24 · 3804 阅读 · 0 评论 -
数据结构与算法基础总结
数据结构与算法1. 各种排序:冒泡、选择、插入、希尔、归并、快排、堆排、桶排、基数的原理、平均时间复杂度、最坏时间复杂度、空间复杂度、是否稳定。一、冒泡排序基本思想是:两两比较相邻记录的关键字,如果反序则交换 冒泡排序时间复杂度最好的情况为O(n),最坏的情况是O(n^2) 改进思路1:设置标志位,明显如果有一趟没有发生交换(flag = flase),说明排序已经完成原创 2016-04-15 11:37:26 · 672 阅读 · 0 评论 -
归并排序C++实现
#include using namespace std; int temp[100];void Merge(int* a, int low, int mid, int high){ int i = low; int j = mid + 1; int size = 0; for (; (i <= mid) && (j <= high); size++) { if (a[i原创 2016-03-27 11:10:53 · 324 阅读 · 0 评论 -
九大排序算法再总结
如果要转载,需要注明出处: http://blog.csdn.net/xiazdong本文是 http://blog.csdn.net/xiazdong/article/details/7304239 的补充,当年看了《大话数据结构》总结的,但是现在看了《算法导论》,发现以前对排序的理解还不深入,所以打算对各个排序的思想再整理一遍。本文首先介绍了基于比较模型的排序算法,转载 2016-02-21 18:56:49 · 405 阅读 · 0 评论 -
12种排序算法详解
作者:寒小阳时间:2013年9月。出处:http://blog.csdn.net/han_xiaoyang/article/details/12163251。声明:版权所有,转载请注明出处,谢谢。0、前言 从这一部分开始直接切入我们计算机互联网笔试面试中的重头戏算法了,初始的想法是找一条主线,比如数据结构或者解题思路方法,将博主见过做过整理过的算转载 2016-03-03 11:47:51 · 33618 阅读 · 4 评论 -
常用数据结构的应用场景
1、单向链接单向链表适用于只从一端单向访问的场合,这种场合一般来说:(1)、删除时,只适合删除第一个元素;(2)、添加时,只直接添加到最后一个元素的后面或者添加到第一个元素的前面;(3)、属于单向迭代器,只能从一个方向走到头(只支持前进或后退,取决于实现),查找效率极差。不适合大量查询的场合。这种典型的应用场合是各类缓冲池和栈的实现。2、双向链表原创 2016-03-02 12:02:24 · 3367 阅读 · 0 评论 -
全面解析回溯法:算法框架与问题求解
什么是回溯法?回溯法的通用框架利用回溯法解决问题问题1:求一个集合的所有子集问题2:输出不重复数字的全排列问题3:求解数独——剪枝的示范问题4:给定字符串,生成其字母的全排列问题5:求一个n元集合的k元子集问题6:电话号码生成字符串问题7:一摞烙饼的排序问题8:8皇后问题总结与探讨附:《算法设计手册》第7章其余面试题解答 摘了一段来自百度转载 2016-08-31 11:36:50 · 2436 阅读 · 0 评论