数据结构
文章平均质量分 51
xxiaozr
这个作者很懒,什么都没留下…
展开
-
数据结构
时间复杂度:在规模为 n 的所有输入中,选择执行时间最长者作为 T(n),并以 T(n)度量该算法的时间复杂度 将 T(n)定义为算法执行基本操作的总次数,即 T(n)决定于组成算法的所有语句各自的执行次数,及其中所含基本操作的数目空间复杂度:算法所需要的存储空间的大小,一般不对其专门考察,因为任何一个算法的任何一次运算过程中消耗的存储空间,都不会多于其间所执行基本操作的累计次数,所以时间复杂度是...原创 2018-03-13 17:21:20 · 176 阅读 · 0 评论 -
数据结构:链表
链表(linked list) 是一种典型的动态存储结构。其中的数据,分散为一系列称为节点(node)的单位,节点之间通过指针相互索引和访问。为了引入新节点和删除原有的节点,只需要在局部,调整少量相关的节点之间的指针。节点定义struct ListNode(){ int val; ListNode* next; ListNode(int x):val(x),next(NUL...原创 2018-03-06 16:46:17 · 432 阅读 · 0 评论 -
动态规划
动态规划是自底向下的方式解决各问题,是递归的过程贪心算法是自顶向下的方法,以迭代的方法相继作出贪心的选择,每一次贪心的选择都将所求的问题简化为规模更小的子问题 ...原创 2018-03-29 23:55:52 · 195 阅读 · 0 评论 -
火车进出栈问题
一个栈的进栈序列为 1,2,3...n,有多少种不同的出栈序列呢?首先假设 F(n) 为序列数量为 n 的出栈序列情况假定最后出栈的元素为 k ,则 k取不同的值的情况是相互独立的,也就是求出每种 k 最后的出栈情况后可以用加法原理,由于 k 最后出栈,则在 k 入栈之前所有比他小的都出栈了,这里的情况为 F(k-1),所有比 k 大的元素都在 k 之前出栈,为 F(n-k)种情况,两种出栈是相...原创 2018-05-15 11:22:07 · 3463 阅读 · 1 评论 -
排序算法
1.冒泡排序 每一次相邻的两个数比较,大数沉底,小数上升,完成一趟,可以让最小的数到达顶端,之后对剩下的【0,i-1】进行相同的排序过程,直到最后排序完成 void BetterBubble(int[] Array,int Size){ int i,j,tmp; for(i=0;i<Size-1;i++){ for(j=0;j<Size-1...原创 2018-08-15 00:33:14 · 210 阅读 · 0 评论 -
最大公共子序列
import sys #题目: #给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串。如何删除才能使得回文串最长呢? #输出需要删除的字符个数。 #1)将字符串翻转 #2)寻找翻转前和后的字符串寻找最大子序列 #3)用字符串长度减去最大子序列的长度 #最大自子序列使用动态规划表格法,使用 a[i][j] 保存 b[:i-1] 和 c[:j-1] 最大子序列长度,a[0][]...原创 2018-08-12 21:58:53 · 423 阅读 · 0 评论 -
二分查找
二分查找的基本假设是数组是有序排列的,时间复杂度 O(log(n))。 主要思路是设定两个头尾指针,比较数组中间节点和待查找元素,如果待查找元素小于中间元素,就将尾指针指向中间元素的前一个元素,反之首指针指向中间元素的下一个元素。 def binarySearch(array,x): #假设数组升序排列 start = 0 end = len(array) - 1 ...原创 2018-08-20 22:16:05 · 178 阅读 · 0 评论