博客专栏  >  编程语言   >  常用算法学习笔记

常用算法学习笔记

记录数据结构学习过程中的编写的各种数据结构及算法实现代码,解决学习过程中遇到的问题。

关注
4 已关注
11篇博文
  • 常用排序算法——快速排序法

    快速排序法是一种高效的排序法,算法的最终性能取决于选取的中间值,直接实现的快速排序法如下:#include #include static int partition( int* array, ...

    2013-12-27 10:23
    3169
  • 常用排序算法——堆排序

    堆排序的逻辑非常简单,但是效率较高,代码如下:#include #include class heap { public: heap(int* array, size_t len):ar...

    2013-12-27 10:17
    2654
  • 常用排序算法——归并排序法

    归并排序采用的是分治思想,将数组不断分解为子数组,直到子数组只有一个元素,每次分解对应一个归并函数,归并函数可以将当前分解的两个子数组合并起来。有两种方式可以实现归并排序,第一种是递归方式实现的,代码...

    2013-12-27 10:11
    3209
  • 常用排序算法——冒泡、插入、选择

    冒泡排序法是初学者最早接触的排序法,实现比较简单,代码如下:#include void bubble_sort(int *array, int len){ for(int i = 1; i...

    2013-12-27 10:05
    4146
  • 交换二叉树的左右子树——非递归方式

    这是华为的一道机试题,其实并不难,不让用递归可以用栈来解决,具体的代码如下:#include #include struct node{ char data ; struct n...

    2013-12-27 09:31
    5136
  • 最短路径算法——Floyd

    Floyd算法相比Dijkstra算法最大的区别是计算出了任意点起始到任意点的最短路径,算法也不难理解,需要注意的是三层for循环的顺序问题,k必须为最外层循环,具体的代码如下:#include #...

    2013-12-24 10:29
    2900
  • 最短路径算法——Dijkstra

    Dijkstra的最短路径算法是基于前驱顶点的最短路径计算的,整体上来讲还是比较简单的,下面是代码:#include #include #include void shortestpath( ...

    2013-12-24 10:25
    3263
  • 最小生成树算法——Kruskal

    Kruskal算法的原理是先将图中的所有边按照权从小到大排序,然后循环取边,判断添加上该边后是子图中否有闭合回路,如果没有,则添加该边,否则舍弃该边。直到所有的边都遍历一遍。 我认为该算法的核心是排序...

    2013-12-20 09:49
    3114
  • 最小生成树算法——Prim

    Prim算法是任选一顶点作为起始点,从当前已纳入的顶点与未纳入的顶点间的所有路径中找出权最小的一条进行连接,循环直到所有的顶点都被纳入。 代码如下:#include #include #inclu...

    2013-12-20 09:46
    2996
  • 栈——中缀表达式转后缀表达式

    中缀表达式转后缀表达式的算法较为简单,采用栈来实现。规则如下: 遇到数字:直接输出遇到'(':压栈遇到')':持续出栈,如果出栈的符号不是'('则输出,否则终止出栈。遇到符号则判断该符号与栈顶符号...

    2013-12-20 09:35
    19386
  • KMP字符串查找

    KMP算法 KMP字符串查找算法的目的是减少不必要的比较次数,举个简单的例子,从字符串A:"abcdeabcdfg"中查找字符串B:"abcdf"。 使用普通的查找法查找字符串的步骤是这样的: 先拿A...

    2013-12-20 09:31
    3920
img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部