博客专栏  >  编程语言   >  算法系列

算法系列

对基本的算法和数据结构进行说明,并使用c语言进行了算法的实现。

关注
25 已关注
20篇博文
  • 图之Dijkstra算法

    Dijkstra算法是一种求单源最短路的算法,即从一个点开始到所有其他点的最短路。其步骤如下:

    2013-07-21 14:07
    11917
  • C语言实现多个数的最小公倍数

    #include //获得最小公倍数 int doLCM(int* array,int size){ int x,y,temp,gcd=array[0],i,result=1; for(i=0...

    2012-09-03 10:08
    7410
  • 求数组的全排列之字典序法

    字典序法说明: 字典序列算法是一种非递归算法。而它正是STL中Next_permutation的实现算法。 它的整体思想是让排列成为可递推的数列,也就是说从前一状态的排列,可以推出一种新的状态,直...

    2012-08-16 08:40
    2592
  • 基于霍夫曼编码的任意文件压缩程序

    本程序主要使用霍夫曼编码对任意文件进行压缩。 程序的步骤如下: 如果有一个文件大小为8个bytes。 其中ascii为m的字符一共出现了n次: m      n 1       3 2      ...

    2013-03-27 21:15
    2744
  • 图之kruskal算法

    kruskal算法是一种最小生成树算法。基本思想如下: 设有一个有n个顶点的连通网N={V,E},最初先构造一个只有n个顶点,没有边的非连通图T={V, E},图中每个顶点自成一个连通分量。当在E中选...

    2013-07-07 16:09
    6496
  • 图之prim算法

    最小生成树是数据结构中图的一种重要应用,它的要求是从一个带权无向完全图中选择n-1条边并使这个图仍然连通(也即得到了一棵生成树),同时还要考虑使树的权最小。 prim算法就是一种最小生成树算法。

    2013-07-03 22:19
    8318
  • 图之图的深度优先遍历

    深度优先遍历是连通图的一种遍历策略。其基本思想如下: 设x是当前被访问顶点,在对x做过访问标记后,选择一条从x出发的未检测过的边(x,y)。若发现顶点y已访问过,则重新选择另一条从x出发的未检测过的...

    2013-06-27 13:11
    52367
  • 图之图的广度优先遍历

    广度优先遍历是连通图的一种遍历策略。其基本思想如下: 1、从图中某个顶点V0出发,并访问此顶点; 2、从V0出发,访问V0的各个未曾访问的邻接点W1,W2,…,Wk;然后,依次从W1,W2,…,Wk出...

    2013-06-26 21:37
    26082
  • 图之图的存储

    关于图的基本概念,这边就不再写了。 下面来说下图的存储,存储图可以使用邻接矩阵和邻接表。 所谓邻接矩阵就是使用一个矩阵来存储图,下图使用矩阵来存储有向图和无向图。 进行简单地说明,图G5中,V0和...

    2013-06-25 21:58
    1605
  • 排序之bitmap排序

    所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。   如果说了这么多还没明白什...

    2013-01-06 12:44
    4170
  • 查找之二叉树查找

    1.      查找树的创建(createTree) 假设有如下数组4,1,45,78,345,23,12,3,6,21 首先选定4为root,然后遍历剩下的数字,如果大于等于4则放到4的右侧,小...

    2013-01-06 09:43
    20321
  • 查找之折半查找

    二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表...

    2012-12-28 11:12
    1182
  • 查找之顺序查找

    所谓顺序查找,就是将数组遍历一遍,一个一个对比,如果相同就算找到了,比较简单。 C语言代码实现如下: #include void display(int array[],int s...

    2012-12-28 10:24
    763
  • 排序之归并操作

    归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。   如 设有数列{6,202,100,301,38,8,1}   初始状态: [6] [20...

    2012-12-26 15:19
    1228
  • 排序之希尔排序

    希尔排序(Shell Sort)是插入排序的一种。是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 先取一个小于n的整数d1作为第一个增量,把文件的全...

    2012-12-26 13:46
    816
  • 排序之直接插入排序

    直接插入排序(straight insertion sort)的作法是:   每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。 具体步骤如下: 初始序列: ...

    2012-12-26 12:48
    970
  • 排序之堆排序

    堆排序是是指利用堆这种数据结构所设计的一种排序算法。 c语言的实现如下: #include #define SIZE 10 //打印数组 void display(int array[]...

    2012-12-21 15:54
    864
  • 排序之直接选择排序

    直接选择排序(Straight Select Sorting) 也是一种简单的排序方法,它的基本思想是:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R{1}~R[n-1]中选取...

    2012-12-21 11:10
    6944
  • 排序之快速排序

    快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部...

    2012-12-21 10:28
    1042
  • 排序之冒泡排序

    冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大...

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