
数据结构与算法
文章平均质量分 67
ddd_1206
这个作者很懒,什么都没留下…
展开
-
数据结构之存储结构
存储结构是数据的逻辑结构用计算机语言的实现,常见的存储结构有: 顺序存储 , 链式存储 , 索引存储 ,以及 散列存储 。其中散列所形成的存储结构叫 散列表(又叫哈希表) ,因此哈希表也是一种存储结构。栈只是一种抽象数据类型,是一种逻辑结构,栈逻辑结构对应的顺序存储结构为顺序栈,对应的链式存储结构为链栈,循环队列是顺序存储结构,链表是线性表的链式存储结构以下与数据的存储结构无关的术语是()原创 2017-04-12 21:15:24 · 593 阅读 · 0 评论 -
快速排序 改进
1、优化选取枢轴 三数取中(medium-of-three),即取三个关键字先进行排序,将中间数作为枢轴, 一般是取左端、右端和中间三个数, 也可以随机选取。 public static void Swap(int[] arr,int low,int high){ int temp = arr[low]; arr[low] = ar原创 2017-08-10 22:02:55 · 486 阅读 · 0 评论 -
栈和队列之仅用递归函数和栈操作逆序一个栈
题目只能用递归函数实现栈中元素逆序。例如,1,2,3,4,5依次压栈,栈中元素为从栈顶到栈底5,4,3,2,1。要求只用递归实现栈的逆序。 解答设计两个递归函数递归函数一:将栈的栈底元素返回并移除 getAndRemoveLastElement递归函数二:逆序一个栈 reverseimport java.util.转载 2017-07-26 20:33:22 · 438 阅读 · 0 评论 -
单调栈
转自http://blog.youkuaiyun.com/alongela/article/details/8227707单调栈与单调队列很相似。首先栈是后进先出的,单调性指的是严格的递增或者递减。单调栈有以下两个性质:1、若是单调递增栈,则从栈顶到栈底的元素是严格递增的。若是单调递减栈,则从栈顶到栈底的元素是严格递减的。2、越靠近栈顶的元素越后进栈。单调栈转载 2017-07-26 22:58:17 · 226 阅读 · 0 评论 -
【整理】七大查找算法
转载地址:http://www.cnblogs.com/maybe2030/p/4715035.html 查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。本文简单概括性的介绍了常见的七种查找算法,说是七种,其实二分查找、插值查找以及斐波那契查找都可以归为一类——插值查找。插值查找和斐波那契查找是在二分查找的基础上的转载 2017-08-19 13:53:10 · 1651 阅读 · 0 评论 -
java数据结构与算法之平衡二叉树(AVL树)的设计与实现
【版权申明】未经博主同意,不允许转载!(请尊重原创,博主保留追究权) http://blog.youkuaiyun.com/javazejian/article/details/53892797 出自【zejian的博客】关联文章:java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 java数据结构与算法之改良顺序表与双链表类似Ar转载 2017-08-20 20:06:05 · 429 阅读 · 0 评论 -
输入一个无序序列,输出第K大的数。
输入一个无序序列,输出第K大的数。 import java.util.Scanner;import java.util.*;public class Main { public static void main (String args[]){ Scanner in=new Scanner(System.in); while(in.hasNextLine()){ St原创 2017-08-26 18:43:18 · 604 阅读 · 0 评论 -
最长上升连续子序列
给定一个整数数组(下标从 0 到 n-1, n 表示整个数组的规模),请找出该数组中的最长上升连续子序列。(最长上升连续子序列可以定义为从右到左或从左到右的序列。) 注意事项time您在真实的面试中是否遇到过这个题? Yes样例给定 [5, 4, 2, 1, 3], 其最长上升连续子序列(LICS)为 [5,原创 2017-08-26 20:49:08 · 726 阅读 · 0 评论 -
最大连续子序列和
最大连续子序列和:在一列数中寻找一些数,这些数满足:任意两个数a[i]和a[j],若i+1=j,必有a[i]需要明确的是状态转移方程中的状态代表的含义。因为contiguous,所以dp[i]代表的应该以i位置元素结尾的连续值,并非最大值。import java.util.Scanner;public class Main { public static void main (Str原创 2017-08-27 17:02:06 · 359 阅读 · 0 评论 -
满二叉树和完全二叉树
树定义和基本术语定义树(Tree)是n(n≥0)个结点的有限集T,并且当n>0时满足下列条件: (1)有且仅有一个特定的称为根(Root)的结点; (2)当n>1时,其余结点可以划分为m(m>0)个互不相交的有限集T1、T2 、…、Tm,每个集Ti(1≤i≤m)均为树,且称为树T的子树(SubTree)。 特别地,不含任何结点(即n=0原创 2017-08-09 18:33:51 · 429 阅读 · 0 评论 -
八大排序算法
概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。 当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。 快速排序:是目前基于比较的内部排序中被认为是最好的方法,原创 2017-08-09 13:20:58 · 343 阅读 · 0 评论 -
二叉树三种遍历方式的六种实现方法
转自http://blog.youkuaiyun.com/u014465639/article/details/71076092一、基本概念每个结点最多有两棵子树,左子树和右子树,次序不可以颠倒。性质:1、非空二叉树的第n层上至多有2^(n-1)个元素。2、深度为h的二叉树至多有2^h-1个结点。3、对任何一棵二叉树T,如果其终端结点数(即叶子结点数转载 2017-06-15 18:31:29 · 403 阅读 · 0 评论 -
线性表、栈、队列等查找、删除、插入的时间复杂度O()
线性表:顺序存储结构(用一段连续地址存储)存、读第i个位置元素,O(1)插入/删除:O(n),从插入/删除位置到最后一个元素都要向前/后移动一个位置。链式存储结构(数据域+指针域)单链表:读取O(n) 插入/删除O(n)——不清楚第i个元素指针位置时,但是已知时为O(1),对于频繁插入/删除有效率优势静态链表(用数原创 2017-04-12 21:16:53 · 17504 阅读 · 1 评论 -
数据结构与算法基础学习(一)
http://www.cnblogs.com/yangwujun/archive/2012/12/29/2839038.html基本概念和术语 1、数据(Data) 数据是外部世界信息的载体,它能够被计算机识别、存储和加工处理,是计算机程序加工的原料。计算机程序处理各种各样的数据,可以是数值数据,如整数、实数或复数;也可以是非数值数据,如字符、文字、转载 2017-04-12 21:18:03 · 3191 阅读 · 0 评论 -
前缀、中缀、后缀表达式
转自http://blog.youkuaiyun.com/antineutrino/article/details/6763722/关键字:概念, 前缀表达式, 前缀记法, 中缀表达式, 中缀记法, 波兰式, 后缀表达式, 后缀记法, 逆波兰式它们都是对表达式的记法,因此也被称为前缀记法、中缀记法和后缀记法。它们之间的区别在于运算符相对与操作数的位置不同:前缀表达式的运转载 2017-04-12 21:19:28 · 600 阅读 · 0 评论 -
数组(Arrays)
数组(Arrays)一、数组1.1数组的定义数组: 由一组名字相同、下标不同的n(n≥1)个相同数据类型的数据元素a0,a1,a2,...,an-1构成的占用一块地址连续的内存单元的有限集合数组的处理比其它复杂的结构要简单① 数组中各元素具有统一的类型;② 数组元素的下标一般具有固定的上界和下界,即数组一旦被定义,它的维数和维界就不再改变。③转载 2017-04-12 21:20:01 · 674 阅读 · 0 评论 -
原码、反码、补码
http://www.cnblogs.com/cumtchw/p/4523332.html机器数一个数在计算机中的二进制表示形式,叫做这个数的机器数,机器数是带符号的,在计算机中用一个数的最高位存放符号,正数为0,负数为1,比如,十进制中的+3,假设计算机字长为8位,转换成二进制就是0000 0011,如果是-3,就是1000 0011.那么,这里0000 0011和1000原创 2017-06-16 19:57:55 · 307 阅读 · 0 评论 -
JAVA中关于链表的操作和基本算法
转自http://blog.youkuaiyun.com/kerryfish/article/details/24043099import java.util.HashMap; import java.util.Scanner; import java.util.Stack; /** * * @author kerryfish * 关于java转载 2017-06-18 21:59:45 · 235 阅读 · 0 评论 -
常用的排序算法的时间复杂度和空间复杂度
常用的排序算法的时间复杂度和空间复杂度排序法最差时间分析平均时间复杂度稳定度空间复杂度冒泡排序O(n2)O(n2)稳定O(1)快速排序O(n2)O(n*log2n)不稳定O(log2n)~O(n)选择排序O(n2)O(n2)稳定O(1)二叉树排序O(n转载 2017-06-23 09:33:00 · 337 阅读 · 0 评论 -
leetcode题目整理
利用堆栈:http://oj.leetcode.com/problems/evaluate-reverse-polish-notation/http://oj.leetcode.com/problems/longest-valid-parentheses/ (也可以用一维数组,贪心)http://oj.leetcode.com/problems/valid-parentheses/转载 2017-07-13 15:32:43 · 825 阅读 · 1 评论 -
链表常见操作java实现一:链表初始化,求链表长度
转自http://blog.youkuaiyun.com/bitcarmanlee/article/details/521551811.前言链表是一种非常基础也非常重要的数据结构,在实际中使用非常广泛,也是各种面试里特别容易出现的类型。尤其在各大IT公司的校招中,不管笔试还是面试,链表几乎都是必出现的题型。因此不管从实际工作场景中,还是在找工作的过程中,熟练掌握链表的相关操作都显得非常转载 2017-06-26 17:06:47 · 2770 阅读 · 0 评论 -
最长公共子串
最长公共子串:两个字符串中的最常公共连续子串。找 两个字符串的最长公共子串,这个子串要求在原字符串中是连续的。其实这又是一个序贯决策问题,可以用动态规划来求解。我们采用一个二维矩阵来记录中间的结 果。这个二维矩阵怎么构造呢?直接举个例子吧:"bab"和"caba"(当然我们现在一眼就可以看出来最长公共子串是"ba"或"ab") b a bc 0 0 0a 0原创 2017-08-27 17:19:08 · 351 阅读 · 0 评论