算法
cuijiyue
这个作者很懒,什么都没留下…
展开
-
6种排序的时间测试代码
double* CreatArray(int len) //创建长度为len的随机数组 { int i; double* p=(double*)malloc(sizeof(double)*len); srand(time(0)); for (i=0;i<len;i++) { p[i]=1000.0*rand()/(RAND_MAX+1.0); } return p; } v原创 2013-08-20 22:32:21 · 1558 阅读 · 0 评论 -
数据结构之排序算法之O(nlogn)
上一次写了冒泡,选择,和插入排序。 这一次写一下堆排序、归并、快速排序。 堆排序 堆排序,主要是利用完全二叉树在数组中的存储方式(层序遍历),i 位置的节点的儿子是 2i 和 2i+1 。 最大堆的定义是,每个结点的值都比他的儿子大的一颗完全二叉树。 那么我们排序的过程就是: 首先将数组中的元素构建成一个最大堆然后将堆顶(根节点)的值拿出来,和最后一个元素交换,这样最大的数就在最后原创 2013-08-20 22:28:30 · 1064 阅读 · 0 评论 -
数据结构之排序算法之O(n^2)
在数据结构中讲解了7中排序算法,冒泡、选择、插入、希尔、堆排序、归并、快速排序。希尔排序感觉有点神,还没搞明白,以后再说。 本篇讲述冒泡、选择、插入这3种时间复杂度O(n^2)的算法 冒泡排序 冒泡排序非常简单,但是如果正常写的话还是有优化的余地的,一般我们写的代码为: void BubbleSort_1(double *a,int low,int high) { if (!a||h原创 2013-08-20 16:03:18 · 885 阅读 · 0 评论 -
KMP模式匹配算法
模式匹配:找到当前字符串中首次与模式字符串完全匹配的位置。 首先讲解暴力搜索算法,KMP匹配算法就是在此基础上发展来的。 代码是基于C语言的。 target指向要搜索的字符串,pattern指向要匹配的模式。 暴力算法简介又称BF算法: 从target的第一个字符开始,依次执行第2步,直到target中剩下的字符个数比pattern中的个数少。从target当前的字符原创 2013-08-13 19:54:03 · 811 阅读 · 0 评论