算法
li6322511
这个作者很懒,什么都没留下…
展开
-
插入排序
#include #include #include #define BUFFER_SIZE 10 void InsertionSort(int *a,int len) { int i=0; int j=0; int *b;b = (int *) malloc(sizeof(int) *len);原创 2013-12-12 18:39:44 · 393 阅读 · 0 评论 -
希尔排序
算法分析希尔排序是按照不同步长对元素进行插入排序,当刚开始元素很无序的时候,步长最大,所以插入排序的元素个数很少,速度很快;当元素基本有序了,步长很小,插入排序对于有序的序列效率很高。所以,希尔排序的时间复杂度会比o(n^2)好一些。由于多次插入排序,我们知道一次插入排序是稳定的,不会改变相同元素的相对顺序,但在不同的插入排序过程中,相同的元素可能在各自的插入排序中移动,最后其稳定性就会被原创 2013-12-17 23:25:32 · 477 阅读 · 0 评论 -
赫夫曼树
【摘要】赫夫曼树,又称“最优树”,是一种带权路径最短的树。赫夫曼树的提出,不仅具有极大的理论价值,而且它的实际应用也十分广泛。本文主要针对赫夫曼树的相关概念的理解,赫夫曼树的构造以及赫夫曼编码的应用做简单阐述。【关键词】赫夫曼树;构造;编码【正文】一 赫夫曼树相关概念的理解赫夫曼树,既然是一种带权路径长度最短的树,这里就牵扯到“路径”、“路径长度”、“树的路径长度”转载 2013-12-18 20:37:06 · 972 阅读 · 0 评论 -
直接插入排序
直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。 设数组为a[0…n-1]。1. 初始时,a[0]自成1个有序区,无序区为a[1..n-1]。令i=12. 将a[i]并入当前的有序区a[0…i-1]中形成a[0…i]的有序区间。3.转载 2013-12-18 16:06:40 · 350 阅读 · 0 评论 -
归并排序
归并排序归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。原创 2013-12-18 16:39:51 · 368 阅读 · 0 评论 -
拆半查找
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以原创 2013-12-18 17:18:51 · 772 阅读 · 0 评论 -
字符匹配函数总结
转自:http://blog.csdn.net/zdl1016/archive/2009/10/11/4654061.aspx 我想说一句“我日,我讨厌KMP!”。KMP虽然经典,但是理解起来极其复杂,好不容易理解好了,便起码来巨麻烦!老子就是今天图书馆在写了几个小时才勉强写了一个有bug的、效率不高的KMP,特别是计算next数组的部分。其实,比KMP算法速度快的转载 2014-04-14 16:24:40 · 622 阅读 · 0 评论