数据结构算法基础与实战
文章平均质量分 52
搜索与推荐Wiki
这个作者很懒,什么都没留下…
展开
-
typedef int Long_int [3]个人理解
以三个带有次序关系的整数来表示一个长整数可利用C语言中提供的整数数组类型 定义长整数为: typedefintLong_int[3]/*typedef: typedef与#define有些类似,但在一些复杂用法上就不同了。1.定义一种类型的别名2.用在旧的C代码中,帮助struct.以前的代码中,生命struct新对象时,必须要带上struct...原创 2014-09-07 10:20:43 · 3146 阅读 · 0 评论 -
《链表》——单向链表和双向链表(Java)
完整的代码地址为:github 点击查看单链表单链表包括数据域和指向下一个节点的指针域,其结构如上图所示首先定义一个数据类:class DATA{ //定义链表的一个节点 String key; //节点的关键字 String name; int age;}定义一个链表类(包括以下几种方法):1:在尾部添加节点原创 2016-05-20 20:03:36 · 3828 阅读 · 0 评论 -
《栈 队列》——栈与队列(Java)
一:对列队列是一种先进先出的数据结构实现代码:package Queue;/* * 使用java构建队列,并模拟实现队列的入队和出对方法 */public class Queue { //队列类 private int maxSize; //定义队列的长度 private int[] arrQueue; //队列 private int rear原创 2016-05-19 21:13:27 · 3306 阅读 · 0 评论 -
《树》——二叉树(Java)
完整代码下载地址: 点击下载1:二叉树的分类(1)空二叉树——如图(a);(2)只有一个根结点的二叉树——如图(b);(3)只有左子树——如图(c);(4)只有右子树——如图(d);(5)完全二叉树——如图(e)。2:二叉树的相关术语树的结点:包含一个数据元素及若干指向子树的分支;孩子结点:结点的子树的根称为该结点的孩原创 2016-05-22 20:29:34 · 2540 阅读 · 0 评论 -
《矩阵》——稀疏矩阵(Java)
转载请注明出处: 转载自 Thinkgamer的CSDN博客:blog.csdn.net/gamer_gyt1:稀疏矩阵的背景2:什么是稀疏矩阵?3:为什么要对稀疏矩阵进行压缩存储以及压缩存储的方式?4:稀疏矩阵的相关运算一:背景 第一此介绍稀疏矩阵是在数据结构学习时,然后当时并没有多么用心的去学习它,因为,感觉它在实际应用中很少遇见,直原创 2016-05-26 13:07:44 · 8992 阅读 · 1 评论 -
《图论》——最短路径 Dijkstra算法(戴克斯特拉算法)
十大算法之Dijkstra算法:最短路径是图论算法中的经典问题。图分为有向图、无向图,路径权值有正值、负值,针对不同的情况需要分别选用不同的算法。在维基上面给出了各种不同的场景应用不同的算法的基本原则:最短路问题。针对无向图,正权值路径,采取Dijkstra算法。如上图,是求a到b的最短路径,这里并不限定b节点,修改为到任意节点的路径,问题是完全一样的。首先需要记录每个...原创 2015-08-01 10:30:59 · 18112 阅读 · 2 评论 -
《图论》——深度优先搜索算法(DFS)
十大算法之广度优先遍历:深度优先搜索遍历类似于树的先序遍历。假定给定图G的初态是所有顶点均未被访问过,在G中任选一个顶点i作为遍历的初始点,则深度优先搜索递归调用包含以下操作:(1)访问搜索到的未被访问的邻接点;(2)将此顶点的visited数组元素值置1;(3)搜索该顶点的未被访问的邻接点,若该邻接点存在,则从此邻接点开始进行同样的访问和搜索。深度优先搜索DFS可...原创 2015-07-31 09:55:35 · 3584 阅读 · 0 评论 -
《图论》——广度优先遍历算法(BFS)
十大算法之广度优先遍历:本文以实例形式讲述了基于Java的图的广度优先遍历算法实现方法,具体方法如下:用邻接矩阵存储图方法:1.确定图的顶点个数和边的个数2.输入顶点信息存储在一维数组vet中3.初始化邻接矩阵;4.依次输入每条边存储在邻接矩阵array中输入边依附的两个顶点的序号i,j;将邻接矩阵的第i行第j列的元素值置为1;将邻接矩阵的第j行第i列的元素值置为1...原创 2015-07-30 11:57:15 · 4115 阅读 · 2 评论 -
《图论》——图的存储与遍历(Java)
一:图的分类1:无向图 即两个顶点之间没有明确的指向关系,只有一条边相连,例如,A顶点和B顶点之间可以表示为 也可以表示为,如下所示 2:有向图 顶点之间是有方向性的,例如A和B顶点之间,A指向了B,B也指向了A,两者是不同的,如果给边赋予权重,那么这种异同便更加显著了原创 2016-05-25 15:28:59 · 16531 阅读 · 3 评论 -
《排序算法》——归并排序,插入排序(Java)
一:归并排序算法步骤:1、申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列2、设定两个指针,最初位置分别为两个已经排好序列的起始位置3、比较两个指针所指向的元素,选择相对小的元素到合并空间,并移动指针到下一位置4、重复步骤3直到某一指针达到序列结尾5、将另一序列下剩下的所有元素直接复制合并到序列结尾归并排序用到了分治策略。用分治策略解决问题分原创 2016-05-18 19:45:53 · 2684 阅读 · 0 评论 -
《排序算法》——堆排序(大顶堆,小顶堆,Java)
十大算法之堆排序:堆的定义如下: n个元素的序列{k0,k1,...,ki,…,k(n-1)}当且仅当满足下关系时,称之为堆。 " ki<=k2i,ki<=k2i+1;或ki>=k2i,ki>=k2i+1.(i=1,2,…,[n/2])" 若将和此次序列对应的一维数组(即以一维数组作此序列的存储结构)看成是一个完全二叉树, 则完全二叉树中每一个节...原创 2015-07-30 09:12:54 · 4425 阅读 · 0 评论 -
《排序算法》——希尔排序,桶式排序(Java)
一:希尔排序也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法,先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量=1(<…该方法实质上是一种分组插入方法原创 2016-05-27 11:13:11 · 2483 阅读 · 0 评论 -
1002答案杭电详解
杭电1002答案详解: 这道题的陷阱是无法用普通的int,long或double能完成的,涉及到了高精度的加法,关于具体的高精度问题,小编建议童鞋们拿出专门的时间把高精度问题整明白,小编在此给出这道题的解法 具体的高精度加减乘除请参考小编整理的一个程序,请点击此链接链接#include<stdio.h>#include<string.h>int shu...原创 2014-08-23 22:03:08 · 4016 阅读 · 0 评论 -
线性查找算法
十大算法之线性查找:介绍:BFPRT算法解决的问题十分经典,即从某n个元素的序列中选出第k大(第k小)的元素,通过巧妙的分 析,BFPRT可以保证在最坏情况下仍为线性时间复杂度。该算法的思想与快速排序思想相似,当然,为使得算法在最坏情况下,依然能达到o(n)的时间复杂 度,五位算法作者做了精妙的处理。时间复杂度O(N)算法步骤:1.将n个元素每5个一组,...原创 2015-07-29 12:25:47 · 4286 阅读 · 0 评论 -
二分查找算法
十大算法之二分查找:二分查找算法是在有序数组中用到的较为频繁的一种算法,在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历,跟每个元素进行比较,其时间为O(n).但二分查找算法则更优,因为其查找时间为O(lgn),譬如数组{1, 2, 3, 4, 5, 6, 7, 8, 9},查找元素6,用二分查找的算法执行的话,其顺序为: 1.第一步查找中间元素,即5,由于5<6,则6必...原创 2015-07-29 10:44:54 · 3077 阅读 · 2 评论 -
动态规划算法
一、基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略 基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通...原创 2015-08-02 09:45:57 · 3000 阅读 · 3 评论 -
《排序算法》——快速排序(Java)
十大算法之快速排序:方法其实很简单:分别从初始序列“6 1 2 7 9 3 4 5 10 8”两端开始“探测”。先从右往左找一个小于6的数,再从左往右找一个大于6的数,然后交换他们。这里可以用两个变量i和j,分别指向序列最左边和最右边。我们为这两个变量起个好听的名字“哨兵i”和“哨兵j”。刚开始的时候让哨兵i指向序列的最左边(即i=1),指向数字6。让哨兵j指向序列的最右边...原创 2015-07-29 09:44:28 · 2436 阅读 · 0 评论