博客专栏  >  综合   >  每日算法

每日算法

每天学一点点算法,每天进步一点点。

关注
13 已关注
27篇博文
  • 【每日算法】图算法(遍历&MST&最短路径&拓扑排序)

    图有邻接矩阵和邻接表两种存储方法,邻接矩阵很简单,这里不讨论,下面我们先看看常用的邻接表表示方法。 邻接表常用表示方法 指针表示法 指针表示法一共需要两个结构体: struct ArcNode...

    2016-02-28 21:04
    2231
  • 【每日算法】哈希表(Hash Table)

    概述哈希表又称散列表,它用于快速查找。查找,如果能够不经过比较,直接就能得到待查记录的存储位置,那效率必定很高。通过在记录的存储位置和它的关键码之间建立一个确定的对应关系H,使得每个关键码key跟唯一...

    2016-02-25 23:16
    1077
  • 【每日算法】二叉树的遍历

    二叉树特点 每个节点最多有两棵子树; 二叉树是有序的,即区分左右子树的次序。 完全二叉树 叶子节点只能出现在最下两层,且最下层的叶子节点都集中在二叉树左侧连续的位置。 如果有度为1的节点,...

    2016-02-25 00:17
    1372
  • 【每日算法】链表 & 例题选讲

    单链表 链表是常用的数据结构,其优点是插入和删除元素时不需要移动,表的容量可扩充,且存储空间可以不连续。 另外,由于涉及到指针,所以很受面试官的青睐。 本文将主要介绍单链表,并简单介绍下双链表和...

    2016-02-24 14:55
    907
  • 【每日算法】栈&队列

    栈和队列栈:后进先出(last-in, first-out, LIFO)队列:先进先出(first-in, first-out, FIFO)栈的实现栈的实现有多种方法,比如静态数组、动态数组以及链表。...

    2016-02-22 18:10
    867
  • 【每日算法】排序算法总结(复杂度&稳定性)

    一、插入排序:稳定,时间复杂度O(n^2)想象你在打扑克牌,一开始左手是空的,接着右手开始从桌上摸牌,并将其插入到左手的一把牌中的正确位置上。为了找到这个正确位置,我们需要从右到左将它与手中的牌比较,...

    2016-02-20 16:12
    1276
  • RSA算法原理

    历史1976年以前,所有的加密方法都是同一种模式:(1)甲方选择某一种加密规则,对信息进行加密; (2)乙方使用同一种规则,对信息进行解密。由于加密和解密使用同样规则(简称”密钥”),这被称为”对称加...

    2015-10-22 21:33
    586
  • 【并行计算】Bitonic Sort(双调排序)基础

    双调序列双调序列(Bitonic Sequence)是指由一个非严格增序列X和非严格减序列Y构成的序列,比如序列(23,10,8,3,5,7,11,78)。定义:一个序列a1,a2,…,an是双调序列...

    2015-10-31 16:22
    3235
  • 【每日算法】计数&基数&桶&位图排序-简介

    在前面的文章中,我们介绍的都是基于比较的排序。对于比较排序,对含n个元素的序列进行排序,在最坏情况下都要用O(n logn)次比较(归并排序和堆排序是渐近最优的)。本文将继续介绍以线性时间运行的排序算...

    2016-02-20 12:48
    1118
  • 【编程珠玑-读书笔记】用位图解决排序问题--仔细分析问题的重要性

    开始读《编程珠玑》,刚看完开篇就觉得很开心。作者从“A Friendly Conversation”讲起,大概是这样子的:一个programmer问作者:“How do I sort a disk f...

    2015-10-28 20:42
    592
  • 【每日算法】堆排序&优先队列

    堆排序(heapsort)的运行时间为O(n logn),是一种原地排序算法,是不稳定的排序算法。堆基本介绍先直观感受一下,下面就是一个堆:16 7 3 20 17 8什么??上面不就一个数组吗……?...

    2016-02-19 23:42
    1429
  • 【每日算法】归并排序及其应用(逆序对&合并有序链表)

    归并排序是建立在归并操作上的排序算法,是采用分治法(Divide and Conquer)的一个非常典型的应用,它常用来做外排序。若将两个有序表合并成一个有序表,称为二路归并。外排序外排序(Exter...

    2016-02-19 19:10
    1473
  • 【每日算法】插入&选择&冒泡排序

    在正式讲排序算法之前,我们先看一个概念:排序算法的稳定性: 假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[...

    2016-02-18 23:50
    3721
  • 【每日算法】快速排序及其应用

    快速排序快排的最坏运行时间为O(n^2),平均运行时间为O(n logn),且隐含的常数因子很小,能够进行就地排序。快排基于分治模式,其基本思想:分解:从序列中取出一个数作为基准数,将比这个数大的数全...

    2016-02-18 15:55
    3919
  • 【每日算法】快速幂

    数值的整数次方实现函数double Power(double base, int n) 求base的n次方,不得使用库函数,同时不需要考虑大数问题。Tips问题本身很直观,但是越简单的题越需要细心思...

    2016-02-18 11:50
    1615
  • 【每日算法】洗牌算法

    洗牌算法 给定一个n个数的序列,设计一个算法将其随机打乱,保证每个数出现在任意一个位置的概率相同(也就是说在n!个的排列中,每一个排列出现的概率相同)。

    2016-02-18 10:27
    933
  • 【每日算法】开篇&二分查找

    开篇 算法是神奇的。 IT技术日新月异,各种语言、工具、平台快速更迭着。 而算法、数据结构,几乎是不会过时的。 之前学习了算法与数据结构,但是总感觉没有用武之地,对算法的认识大多仅限于”程序设...

    2016-02-18 10:24
    1421
  • 使用两个队列实现一个栈

    队列是先进先出,而栈是先进后出;考虑到我们取栈顶元素的便利性,我们在实现时使得栈顶等于队列头;由于栈的pop弹出栈顶元素,而队列的pop也是弹出栈顶元素,所以我们需要特别处理的是插入操作。由于往栈中添...

    2016-01-25 21:56
    2567
  • 使用两个栈实现一个队列

    实现1s1:用于入栈; s2:出栈时用于辅助;入队列:直接压入s1中; 出队列:将s1的元素倒入s2中,s2弹出栈顶元素,再把元素倒回s1中;实现2s1:用于入栈; s2:用于出栈。 所有元素...

    2016-01-21 17:50
    438
  • 【随机算法】Miller-Rabin大素数检测算法(蒙特卡罗方法)

    费马小定理  假如p是质数,且(a,p)=1,那么 a^(p-1)≡1(mod p)。  即:假如a是整数,p是质数,且a,p互质(即两者只有一个公约数1),那么a的(p-1)次方除以p的余数恒等于1...

    2015-10-26 21:23
    1040
img博客搬家
img撰写博客
img专家申请
img意见反馈
img返回顶部