• 线性排序

    基数排序 vs 计数排序 vs 桶排序 这三种排序算法都利用了桶的概念,但对桶的使用方法上有明显差异: 基数排序:根据键值的每位数字来分配桶; 计数排序:每个桶只存储单一键值; 桶排序:每个桶存储一定范围的数值; 桶排序(Bucket...
  • 归并排序和快速排序

    归并排序和快速排序,这两种排序算法适合大规模的数据排序,时间复杂度均为 O(nlogn)。 归并排序如果要排序一个数组,先把数组从中间分成前后两部分,然后对前后两部分分别排序,再将排好序的两部分合并在一起,这样整个数组就都有序了。 算法思路 ...
  • 排序算法(sort)

    分析一个“排序算法”执行效率最好情况、最坏情况、平均情况时间复杂度: 在分析排序算法的时间复杂度时,要分别给出最好情况、最坏情况、平均情况下的时间复杂度,同时还要大概了解一下这些情况下的原始数据的组成。 对于要排序的数据,有的接近有序,有的完...
  • 递归(Recursion)

    递归是一种应用非常广泛的算法(或者编程技巧)。很多数据结构和算法的编码实现都要用到递归,比如 DFS 深度优先搜索、前中后序二叉树遍历等等。 递归的满足条件: 一个问题的解可以分解为几个子问题的解 这个问题与分解之后的子问题,除了数据规模不同...
  • Ruby实现循环队列(CircularQueue)

    昨天进行了队列的部分,准备今天把循环队列单独拿出来做一次笔记,关于Ruby的循环队列。 _没有找到什么值得参考的博文和例子,就只能自己慢慢摸索这着写。_同时参考了该题目662.设计循环队列 根据循环队列的需要列出了大概的结构框架,然后需要针对每个...
  • 队列(queue)

    队列这个概念非常好理解。 可以把它想象成排队买票,先来的先买,后来的人只能站末尾,不允许插队。先进者先出,这就是典型的“队列”。 队列跟栈非常相似,支持的操作也很有限,最基本的操作也是两个:入队 enqueue(),放一个数据到队列尾部;出队 deq...
  • 栈(stack)

    后进者先出,先进者后出,这就是典型的“栈”结构。 栈的结构 在上面这个栈中,我们加入节点的顺序是 node3, node2, node1。而访问节点的时候,我们则按照从上到下的顺序:node1, node2, node3。 从栈的操作特性上来看,栈...
  • 如何完成一个链表

    Ruby的简单的单链表实例: 1234567891011121314151617# 单链表节点class Node attr_accessor :value , :next def initialize(value) @va...
  • 链表

    链表结构链表其实跟数组差不多,都是一群元素的集合。链表中的各个元素,称之为’节点’。一个节点也没有的链表,就是一个空链表。在非空的链表里,每个节点又分为两部分:第一部分是这个节点的容器,用来储存信息;另一部分是该节点指针,指向其他节点,以便我们将单个...
  • 数组问题

    随机访问数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 线性表: 线性表就是数据排成像一条线一样的结构。每个线性表上的数据最多只有前和后两个方向。 除了数组,链表、队列、栈等也是线性表结构。 和线性表...