数据结构和算法
文章平均质量分 92
obession
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
素数的判断方法
1.转自 http://blog.youkuaiyun.com/kp_liu/article/details/375695072.http://366674654.iteye.com/blog/1512916先做题 过会在来整理吧转载 2017-02-27 14:01:06 · 260 阅读 · 0 评论 -
冒泡排序-->快速排序
冒泡排序:复杂度n^2;public class BubbleSort1 { static int[] sqlist = {0,9,8,7,5,6,4,3,2,1,12,23,11}; public static void main(String[] args) { // TODO Auto-generated method stub bublesort2(sqlist)原创 2017-08-05 17:34:45 · 316 阅读 · 0 评论 -
简单选择排序-->堆排序
选择排序:简单选择排序-->堆排序复杂度:log(n^2)--->n*log(n);简单选择排序:n个数排序:遍历n-1次,每一次找出这次遍历所有数最小数的下标,然后和第一个数换;public class SimpleSelectSort { static int[] sqlist = {0,9,8,7,5,6,4,3,2,1,12,23,11}; publi原创 2017-08-05 12:15:17 · 260 阅读 · 0 评论 -
直接插入排序-->希尔排序
插入排序类:直接插入排序:最好情况:O(n)最坏情况和平均情况O(n^2)稳定希尔排序:最好情况:O(n^1.3)最坏情况:O(n^2)平均:O(nlogn)-->O(n^2)不稳定原创 2017-09-20 21:31:08 · 340 阅读 · 0 评论 -
归并排序
归并排序 采用分治策略 ,先分再治; 分为 把序列递归拆分成一个一个的单数;认为有序;然后再合并每一次扫描需要O(n)时间,二叉树的深度可知,扫描需要logn次。时间复杂度:O(n*logn);空间需要一个储存数组O(n);public class MergingSort {// static int[] sqlist = {0,9,8,7,5,6,4,3,2,1,12原创 2017-08-09 12:37:44 · 325 阅读 · 0 评论 -
各种二叉树和查找结构总结
1. 二叉查找树(Binary Sort Tree):又叫-二叉排序树;性质:要不是一颗空树,要不就是一颗左子树<根节点<右子树的二叉树2. 平衡二叉树(AVL树)(Self-Balancing Binary Search或者Height-Balanced Binary Search):二叉树节点的左子树深度减去右子树的值成为平衡因子BF;BF只可能为-1,0,1; 也是一种二叉查找树3. 红黑树原创 2017-09-10 11:01:11 · 960 阅读 · 0 评论 -
斐波那契数列几种算法
斐波那契数列:1、1、2、3、5、8、13、21;斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*);大家都会的递归~~public class Main { public static void main(String[] args) { int n = 10; int result = digui(n)原创 2017-03-18 10:54:47 · 3033 阅读 · 0 评论 -
算法训练 表达式计算 中后缀表达
问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值。其中除表示整除。输入格式 输入一行,包含一个表达式。输出格式 输出这个表达式的值。样例输入1-2+3*(4-5)样例输出-4数据规模和约定 表达式长度不超过100,表达式运算合法且运算过程都在int内进行。这道题要学习 中缀表达式 --> 后缀表达式 1-2+3*原创 2017-03-19 11:27:11 · 1100 阅读 · 0 评论 -
剑指offer--二叉树的深度--层次遍历/BFS
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。第一种方法递归;第二种方法用BFS层次遍历二叉树--见 剑指offer--从上往下打印二叉树--层次遍历、广度优先搜索广度优先搜索--迷宫最短路径--队列import java.util.LinkedList;import java.ut原创 2017-08-11 11:37:48 · 697 阅读 · 0 评论 -
剑指offer--从上往下打印二叉树--层次遍历、广度优先搜索
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。二叉树的层次遍历,广度优先搜索,用队列实现即可;以前有个BFS的写法思路:点这。。import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;/*层次遍历算法 * 实际就是广度优先BFS*/p原创 2017-07-09 20:20:41 · 403 阅读 · 0 评论 -
深度优先搜索--迷宫可能路径--栈
深度优先搜索(depth-first-search)简称 dfs,dfs 按照深度优先的方式搜索,通俗的说就是一条路走到黑。dfs 是一种穷举的手段,实际上就是把所有的可行方案列举出来,不断去试探,直到找到问题的解。dfs 是一种搜索算法,dfs 一般的实现方法是借助递归。dfs的一般写法:void dfs(int deep) { if (到达边界) { // 做一些处原创 2017-03-31 11:26:33 · 730 阅读 · 0 评论 -
蓝桥杯-和并石子--区间DP
问题描述 在一条直线上有n堆石子,每堆有一定的数量,每次可以将两堆相邻的石子合并,合并后放在两堆的中间位置,合并的费用为两堆石子的总数。求把所有石子合并成一堆的最小花费。输入格式 输入第一行包含一个整数n,表示石子的堆数。 接下来一行,包含n个整数,按顺序给出每堆石子的大小 。输出格式 输出一个整数,表示合并的最小花费。样例输入51 2 3 4 5样原创 2017-04-05 17:10:34 · 478 阅读 · 0 评论 -
计蒜客模拟赛5-礼物盒
小y 有一个宽度为 100cm,高度为 20cm,深度为 1cm 的柜子,如下图。小y还有 36个礼物盒,他们的深度都为 1cm。他们对应的宽度和高度如下,单位(cm)。11 38 1211 1716 131 142 86 1010 1817 1110 156 145 62 1919 104 97 95 1原创 2017-04-02 20:54:05 · 917 阅读 · 3 评论 -
求最大公约数
public class test2{ public static void main(String[] args) { int a = 36 ; int b = 24 ; int ans = gcd(a,b); System.out.println(ans); } private static int gcd(int a, int b) { // TODO Au原创 2017-03-23 22:29:17 · 517 阅读 · 0 评论 -
蓝桥杯模拟赛--康托展开式--全排列(不重复数据)
题目是这样的:标题: 排列序数X星系的某次考古活动发现了史前智能痕迹。这是一些用来计数的符号,经过分析它的计数规律如下:(为了表示方便,我们把这些奇怪的符号用a~q代替)abcdefghijklmnopq 表示0abcdefghijklmnoqp 表示1abcdefghijklmnpoq 表示2abcdefghijklmnpqo 表示3abcdefghijk原创 2017-03-23 13:33:05 · 1042 阅读 · 0 评论 -
广度优先搜索--迷宫最短路径--队列
不同于深度优先遍历,先找一个子节点,再找子节点的子节点...广度优先遍历会挨着子节点遍历,第一层的子节点遍历完了,才会遍历第二层;如图: bfs(起点){ 起点加入队列; while (队列!=空) { 得到队首x; 删除队首; for(遍历X的子节点){ 子节点加入队列尾; } } }所以说,用广度优先 先访问原创 2017-03-28 23:10:41 · 1307 阅读 · 0 评论 -
循环队列
为充分利用向量空间,克服"假溢出"现象的方法是:将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量。存储在其中的队列称为循环队列(Circular Queue)。这种循环队列可以以单链表的方式来在实际编程应用中来实现。队列的常用操作:入队,出队,判空,统计个数,访问队列头尾;由于队列和栈都是线性表,所以队列也同样可以用数组模拟来手动实现。但是由于队列的出队与原创 2017-03-28 15:15:22 · 478 阅读 · 0 评论 -
全排列算法
做了第三题-搭积木和 第六题-寒假作业,都用了全排列。用dfs写全排列:package test;/*比如从1-9,思路:让a[1]-a[9]每个数从1-9遍历,用visit[10] *记录,如果用过了,置为false.*/public class Main { static int count = 0; public static void main(原创 2017-02-07 17:35:04 · 515 阅读 · 0 评论 -
二叉排序树 删除 增加
public class BinarySortTree { /** * 根结点 */ private TreeNode rootNode; /** * 获取rootNode * @return */ public TreeNode getRootNode() {转载 2017-11-28 21:44:24 · 367 阅读 · 0 评论
分享