《排序算法》——希尔排序,桶式排序(Java)

一:希尔排序 也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法, 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序; 然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量 =1( < … 该方法实质上是一种分组插入方法...
阅读(1339) 评论(0)

《矩阵》——稀疏矩阵(Java)

转载请注明出处: 转载自  Thinkgamer的CSDN博客:blog.csdn.net/gamer_gyt 1:稀疏矩阵的背景 2:什么是稀疏矩阵? 3:为什么要对稀疏矩阵进行压缩存储以及压缩存储的方式? 4:稀疏矩阵的相关运算 一:背景         第一此介绍稀疏矩阵是在数据结构学习时,然后当时并没有多么用心的去学习它,因为,感觉它在实际应用中很少遇见,直...
阅读(3992) 评论(0)

《图论》——图的存储与遍历(Java)

一:图的分类 1:无向图         即两个顶点之间没有明确的指向关系,只有一条边相连,例如,A顶点和B顶点之间可以表示为 也可以表示为,如下所示                       2:有向图         顶点之间是有方向性的,例如A和B顶点之间,A指向了B,B也指向了A,两者是不同的,如果给边赋予权重,那么这种异同便更加显著了...
阅读(7454) 评论(3)

《树》——二叉树(Java)

完整代码下载地址: 点击下载 1:二叉树的分类 (1)空二叉树——如图(a); (2)只有一个根结点的二叉树——如图(b); (3)只有左子树——如图(c); (4)只有右子树——如图(d); (5)完全二叉树——如图(e)。 2:二叉树的相关术语 树的结点:包含一个数据元素及若干指向子树的分支; 孩子结点:结点的子树的根称为该结点的孩...
阅读(1347) 评论(0)

《链表》——单向链表和双向链表(Java)

完整的代码地址为:github  点击查看 单链表 单链表包括数据域和指向下一个节点的指针域,其结构如上图所示 首先定义一个数据类: class DATA{ //定义链表的一个节点 String key; //节点的关键字 String name; int age; } 定义一个链表类(包括以下几种方法): 1:在尾部添加节点...
阅读(1635) 评论(0)

《栈 队列》——栈与队列(Java)

一:对列 队列是一种先进先出的数据结构 实现代码: package Queue; /* * 使用java构建队列,并模拟实现队列的入队和出对方法 */ public class Queue { //队列类 private int maxSize; //定义队列的长度 private int[] arrQueue; //队列 private int rear...
阅读(1367) 评论(0)

《排序算法》——归并排序,插入排序(Java)

一:归并排序 算法步骤: 1、申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列 2、设定两个指针,最初位置分别为两个已经排好序列的起始位置 3、比较两个指针所指向的元素,选择相对小的元素到合并空间,并移动指针到下一位置 4、重复步骤3直到某一指针达到序列结尾 5、将另一序列下剩下的所有元素直接复制合并到序列结尾 归并排序用到了分治策略。 用分治策略解决问题分...
阅读(1357) 评论(0)

动态规划算法

一、基本概念     动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。 二、基本思想与策略     基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通...
阅读(1745) 评论(3)

《图论》——最短路径 Dijkstra算法(戴克斯特拉算法)

十大算法之Dijkstra算法: 最短路径是图论算法中的经典问题。图分为有向图、无向图,路径权值有正值、负值,针对不同的情况需要分别选用不同的算法。在维基上面给出了各种不同的场景应用不同的算法的基本原则:最短路问题。 针对无向图,正权值路径,采取Dijkstra算法。 如上图,是求a到b的最短路径,这里并不限定b节点,修改为到任意节点的路径,问题是完全一样的。 首先需要记录...
阅读(7745) 评论(2)

《图论》——深度优先搜索算法(DFS)

深度优先搜索遍历类似于树的先序遍历。假定给定图G的初态是所有顶点均未被访问过,在G中任选一个顶点i作为遍历的初始点,则深度优先搜索递归调用包含以下操作: (1)访问搜索到的未被访问的邻接点; (2)将此顶点的visited数组元素值置1; (3)搜索该顶点的未被访问的邻接点,若该邻接点存在,则从此邻接点开始进行同样的访问和搜索。 深度优先搜索DFS可描述为: (1)访问v0顶点;...
阅读(1279) 评论(0)

《图论》——广度优先遍历算法(BFS)

十大算法之广度优先遍历: 本文以实例形式讲述了基于Java的图的广度优先遍历算法实现方法,具体方法如下: 用邻接矩阵存储图方法: 1.确定图的顶点个数和边的个数 2.输入顶点信息存储在一维数组vet中 3.初始化邻接矩阵; 4.依次输入每条边存储在邻接矩阵array中 输入边依附的两个顶点的序号i,j; 将邻接矩阵的第i行第j列的元素值置为1; 将邻接矩阵的第...
阅读(2058) 评论(2)

《排序算法》——堆排序(大顶堆,小顶堆,Java)

堆的定义如下:   n个元素的序列{k0,k1,...,ki,…,k(n-1)}当且仅当满足下关系时,称之为堆。   " ki=k2i,ki>=k2i+1.(i=1,2,…,[n/2])"   若将和此次序列对应的一维数组(即以一维数组作此序列的存储结构)看成是一个完全二叉树,   则完全二叉树中每一个节点的值的都大于或等于任意一个字节的值(如果有的话),称之为大顶堆。   则完全二叉树...
阅读(2214) 评论(0)

线性查找算法

十大算法之线性查找: 介绍: BFPRT算法解决的问题十分经典,即从某n个元素的序列中选出第k大(第k小)的元素,通过巧妙的分 析,BFPRT可以保证在最坏情况下仍为线性时间复杂度。该算法的思想与快速排序思想相似,当然,为使得算法在最坏情况下,依然能达到o(n)的时间复杂 度,五位算法作者做了精妙的处理。 时间复杂度 O(N) 算法步骤: 1. 将...
阅读(2416) 评论(0)

二分查找算法

十大算法之二分查找...
阅读(1592) 评论(2)

《排序算法》——快速排序(Java)

十大算法是快速排序,其实很简单...
阅读(1048) 评论(0)

1002答案杭电详解

这道题的陷阱是无法用普通的...
阅读(1313) 评论(0)
    Thinkgamer微博
    微信公众号【码农故事多】
    个人资料
    • 访问:873268次
    • 积分:10380
    • 等级:
    • 排名:第1802名
    • 原创:218篇
    • 转载:22篇
    • 译文:2篇
    • 评论:294条
    个人简介
    姓名:Thinkgamer

    Github:https://github.com/thinkgamer

    主攻:云计算/python/数据分析

    程度:熟悉/熟悉/熟悉

    微信:gyt13342445911

    Email:thinkgamer@163.com

    工作状态:在职ing

    心灵鸡汤:只要努力,你就是下一个大牛...

    hadoop/spark/机器学习群:279807394(大神建的群,蹭个管理员)

    欢迎骚扰........
    博客专栏
    最新评论