博客专栏  >  综合   >  基础算法

基础算法

总结常见的基础算法:排序、查找、图、字符串相关算法

关注
5 已关注
14篇博文
  • 基础数据结构04:背包

    介绍  背包是一种不支持从中删除元素的集合数据类型。它存在的目的就是帮助收集元素并迭代遍历收集到的元素。迭代的顺序不确定且与用例无关。APIJava实现  背包可以使用数组,也可以使用链表来实现。如果...

    2017-07-18 17:06
    148
  • 基础数据结构03:栈

    介绍  栈是一种后进先出的数据结构。栈类似于一截一端封口的竹筒,不断像竹筒中放入东西,然后不断从中取出东西,最后放进竹筒中的东西总是最先被取出来,最先放进竹筒里的东西由于在竹筒的最底部,总是最后被取出...

    2017-07-03 00:12
    477
  • 基础数据结构02:队列

    介绍  队列是一种先进先出的数据结构。类似于一截水从一端流向另一端的水管,先进入水管的水最先从另一端出来。Java实现  下面使用链表来实现先进先出的数据结构。package com.algs.bas...

    2017-06-30 23:58
    391
  • 基础数据结构01:链表

    说明  链表的类似于一个连着一个的圆环。在链表中,要想访问某个节点,必须通过他的上一节点来访问。Java实现package com.algs.base;import java.util.Iterato...

    2017-06-26 22:32
    448
  • 排序算法09:排序算法总结

    在这篇之前,对常见的8中排序算法进行了梳理,《算法》第四版中的这一张图对各种排序算法的性能特点做了总结。   补充冒泡排序:稳定、原地排序、时间复杂度为n²,空间复杂度为1。其它: 快速排序是最快的...

    2017-05-05 09:20
    290
  • 排序算法08:优先队列与堆排序

    堆排序一种是基于二叉堆的排序。本文将从优先队列讲起,循序渐进的实现堆排序。这也是《算法》第四版上讲解堆排序的大致章节结构。另外,本文所有的图都来自于此书。优先队列  普通队列是一种先进先出的数据结构,...

    2017-05-03 23:56
    541
  • 排序算法07:三向快速排序

    算法介绍  在上一篇排序算法06:快速排序中,可以知道,快速排序不停的递归切分数组。在有大量的重复元素情况下,这样的切分存在巨大的改进空间。三向切分的快速排序就是为了提升在有大量重复元素情况下快速排序...

    2017-04-30 23:21
    652
  • 排序算法06:快速排序

    算法介绍  快速排序是一种分治的排序算法。排序逻辑为:先挑一个元素来切分数组,最终让该元素的左侧都小于该元素,右侧的所有元素都大于该元素。递归的让左侧和右侧分别执行该操作,最终让整个数组变得有序。快速...

    2017-04-30 23:19
    536
  • 排序算法05:归并排序

    算法介绍  归并排序的算法逻辑为把两个有序的数组归并为一个有序的数组。举个例子,对于一个长度为8的数组,有两种归并方式自顶向下的归并: 1. 先分为[0-3],[4-7],左右有序后再归并到一起就变...

    2017-04-29 16:59
    468
  • 排序算法04:希尔排序

    算法介绍  从上一篇《插入排序》可以知道,当最小元素恰好在最后一个时,需要移动的次数为N-1。当一个从大到小排列的数组使用插入排序变成从小到大排列时,需要比乱序状态下耗费更多的时间。原因为插入排序是从...

    2017-04-23 22:57
    236
  • 排序算法03:插入排序

    算法介绍 步骤: 1. 从第一个元素开始,该元素可以认为已经被排序 2. 取出下一个元素,在已经排序的元素序列中从后向前扫描 3. 如果被扫描的元素(已排序)大于新元素,将该元素...

    2017-04-23 00:01
    272
  • 排序算法02:选择排序

    算法介绍  首先,从[0,len]中找到数组中最小的元素,让它与第一个元素交换。接着从[1,len]中找出最小的元素,让它与第二个元素交换。循环往复,最终使得数组从小到大排序。可视化效果:这里Java...

    2017-04-22 19:44
    222
  • 排序算法01:冒泡排序

    算法介绍 步骤: 1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2. 对第0个到第n-1个数据做同样的工作。这时,最大的数就“浮”到了数组最后的位置上。 3. 针...

    2017-04-22 19:43
    310
  • 算法的时间复杂度

    关于算法的时间复杂度经常会看到比如logN,NlogN等。之前一直觉得搞不清楚,来一个问题不知道怎么得出该算法的时间复杂度。最近在撸《算法》第四版,是时候祭出下面这张图了。  时间复杂度这个东西,其实...

    2017-02-26 23:08
    393

img博客搬家
img撰写博客
img专家申请
img意见反馈
img返回顶部