- 博客(12)
- 资源 (12)
- 收藏
- 关注
原创 C语言单链表实现约瑟夫环
1.约瑟夫环问题编号为1,2…n的人按顺时针方向围坐一圈,每个人持有一个密码(正整数)。开始任选一个整数作为报数上限m,从第一个人顺时针自1开始顺时针报数,报到m时停止报数。报到m的人出列,将他的密码作为新的m值,从他顺时针方向上的下一个人开始重新从1报下去,如此下去,直到所有的人全部出列为止。例如,m的初值为20;n=7,7个人的密码依次是3,1,7,2,4,8,4。求出列的顺序。2.问题分析1.
2016-04-22 21:39:07 4898
原创 DAMAGE:after Normal block问题
最近写程序经常遇到这个问题,这些程序都有一个共同点就是用到了free和malloc函数。今天晚上复习约瑟夫环的时候又出现了这个问题: 最后发现是在free的地方有问题,就是你要释放的内存,比你申请的内存要大,因此发生内存溢出。所以,基本上都是修改malloc处的内存申请的大小,基本上就可以解决了。
2016-04-22 21:00:34 506
原创 算法分析之——基数排序
基数排序基数排序(radix-sort),首先是按照最低有效位数字进行排序,然后再按次低有效位,知道对所有的数字都进行排序。对于d位数来说,仅需d遍就可以将一个数组排好序。下图给出形象的排序过程:红色表示当前正被排序的数位。对于基数排序,重要的一点就是按位排序要稳定。因此,在这一步,我们可以选择稳定的排序算法。如:计数排序、插入排序、归并排序都可以。接下来给出基数排序的算法实现过程:void rad
2016-04-15 20:32:55 901
原创 Shannon-Fano-Elias编码的C语言实现
Shannon-Fano-Elias编码一.理论分析Shannon-Fano-Elias编码是利用累积分布函数来分配码字。不失一般性,假定取X={1,2,…m}。假设对于所有的x,有p(x)>0。定义累积分布函数F(X)为 其函数图形见下图所示,修正的累积分布函数为其中表示小于x的所有字符的概率和加上字符x概率的一般得到的值。由于随机变量是离散的,故累积分布函数所含的阶梯高度为p(x)。函数的值
2016-04-15 10:38:22 4497
原创 C和指针——读书笔记(一)
本科的时候学过C语言,知识基础真是薄弱。最近被指针折磨的痛不欲生,在实验室翻出一本《C和指针》,翻出来读,第一章就觉得受益匪浅,于是决定写一些读书笔记,记下自己疑惑的地方。C语言中基本的输入输出函数有:putchar ():把变量中的一个字符常量输出到显示器屏幕上; getchar ();从键盘上输入一个字符常量,此常量就是该函数的值; printf ();把键盘中的各类数据,加以格式控制输出
2016-04-14 17:31:09 831
原创 番茄助手Visual Assist X中文注释拼写提示
番茄助手Visual Assist X是vc++6.0的一个插件,最近在用的时候,中文注释总会提示拼写错误,像这样: 查了一下解决方法:将Visual Assist X Options —> Advanced —> Underlines中的Underline spelling errors in comments and strings 左边的勾去掉即可。 Visual Assist X O
2016-04-13 16:37:36 3252
原创 算法分析之——计数排序
计数排序不同于比较排序,是基于计数的方式,对于计数排序,假设每一个输入都是介于0~k之间的整数。对于每一个输入元素x,确定出小于x的元素的个数。假如有17个元素小于x,则x就属于第18个输出位置。 计数排序涉及到三个数组A[0…..length-1],length为数组A的长度;数组B与数组A长度相等,存放最终排序的结果;C[0…..K]存放A中每个元素的个数,k为数组A中的最大值。int cou
2016-04-10 14:30:22 2239 1
原创 算法分析之——heap-sort堆排序
堆排序是一种原地排序排序算法,不使用额外的数组空间,运行时间为O(nlgn)。本篇文章我们来介绍一下堆排序的实现过程。 要了解堆排序,我们首先来了解一个概念,完全二叉树。堆是一种完全二叉树或者近似完全二叉树。什么是完全二叉树呢?百度百科上给出定义:完全二叉树:除最后一层外,每一层上的节点数均达到最大值;在最后一层上只缺少右边的若干结点。下面用两个小图来说明完全二叉树与非完全二叉树。(图片来自百度
2016-04-10 09:54:38 2438 2
原创 算法分析之——quick-sort快速排序
快速排序是一种排序算法,最坏情况运行时间为θ(n²),但其最佳期望运行时间为θ(nlgn),并且θ(nlgn)记号中隐含的常数因子很小,快排是在就地排序的一种排序算法。快排是基于分治思想的,与归并排序一样。快速排序是一种不稳定的排序算法,因为算法实现过程中涉及到元素交换。思路:(1)分解:数组A[n]被划分两个字数组A[0..q-1]和A[q+1..n],使得对于数组A[0..q-1]中的元素都
2016-04-09 14:10:32 1698
原创 算法分析之归并排序——算法整体实现过程
昨天写了,归并排序子函数的实现。今天,我们来分析一下,归并排序算法整体的实现过程。数组A为待排序数组,A的数组元素如下:5、2、4、7、1、3、2、6,数组下标从0开始。 1.我们调用归并排序算法:merge_sort(A,0,length-1);归并排序算法的具体实现过程如下: p为数组元素的起始下标,r为终止下标,因此在数组A中p=0,r=7/******************合并排序
2016-04-07 11:42:03 919
原创 算法分析之合并排序——merge sort子函数实现
**合并排序**,顾名思义,合并另个子序列。此处一般合并两个已排序的子序列。merge(A,p,q,r)。A是待排序数组,p、q、r是下标,且满足P<=q<r。其中A[p...q]和A[q+1...r]是已经排好序的子序列。将他们合并成一个新的数组的过程叫合并排序。如待排序数组如下:![待排序数组](http://img.blog.csdn.net/20160405220918848)上面的数
2016-04-05 22:07:27 4935
原创 算法分析之插入排序——动态数组实现
插入排序,最简单的排序算法。本次采用动态数组实现。1.申请动态数组空间 printf("输入数组的大小length:\n"); int length=0; scanf("%d",&length); /****动态分配内存初始化数组***********************/ int * array = (int*)malloc(length * sizeof
2016-04-04 21:51:41 740
动态规划实现矩阵链乘法
2016-05-07
基数排序——radix-sort
2016-04-15
shannon-fanon-elias编码C语言实现
2016-04-15
计数排序——count_sort
2016-04-10
堆排序——heap-sort
2016-04-09
merge-sort
2016-04-09
快速排序——quicksort
2016-04-08
归并排序整体实现——merge-sort
2016-04-06
合并排序算法——merge sort
2016-04-05
插入排序算法(动态数组实现)
2016-04-04
CRC-12校验JAVA代码
2013-12-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人