- 博客(5)
- 收藏
- 关注
原创 归并排序的几种变形
归并排序的基础概念就不讲了,我的博客只会写有创造性的东西。 归并排序的代码如下:void mergesort(int* arr,int n){if(n>1){mergesort(arr,n/2);mergesort(arr+n/2,n-n/2);merge(buff,arr,n/2,arr+n/2,n-n/2); memcpy(arr,buff,n);}}
2016-03-21 21:46:33 885
原创 二叉树树形输出的几种方法
二叉树的输出,最简单的方法,就是下面这个:void puttree(tree t){if(t==NULL)return;else{puttree(t->left);printf(“%d ”,t->data);puttree(t->right);}} 以这棵树为例,输出的是1 3 4 6 7 8 10 13 14 这个方法最简单,也最高效,不过你不能
2016-03-19 21:44:14 22234 3
原创 哨兵元素的应用总结
哨兵,顾名思义,是用来解决国家之间边界问题的,不直接参与生产活动。同样,计算机科学中提到的哨兵,也用来解决边界问题。 在许多算法中,存在“邻居依赖问题”(我自己造的词),在处理当前元素时,要涉及到它旁边那个元素。那如果当前元素是边界元素呢,它没有旁边那个元素,如果不作处理,程序就可能出错;如果对它特别对待,就会增加代码复杂性,还会降低程序效率。应用哨兵,也就是申请若干个多余的元素作为边
2016-03-17 20:27:29 3103 1
原创 指针与下标计算
差一错误是所有程序员的噩梦!它看起来是一个琐碎的问题,却非常烦人,许多程序员对它是采取一种“轻蔑”的态度,即使被它虐了千百遍,还是不愿意正视这个问题。其实,差一问题并不是一个小问题,我们应该对它给予足够的重视。在《C陷阱与缺陷》中,对这个问题有详细的讨论,这里结合我的理解写一写解决这个问题的方法。 许多程序员在遇到差一问题时,常常采用的是“探测法”,一个位置应该写n还是应该写n
2016-03-14 22:02:21 2066
原创 递归与算法分析(一)递归总论
鉴于行业内对递归存在许多误解和疑惑,这里我想结合算法分析,写一个系列关于递归和算法分析的博客。 在这一章,我们要讲的是递归的形式和思维方法,在后面的章节里,我们会讲到时间复杂度和空间复杂度的分析,在那里我们就会看到,并不是什么递归函数都效率低,都会溢出。 概念背得再熟,你也不会写!请写出这个函数 嗯,是这样写的:int f(int n){if(n==0)retur
2016-03-13 15:29:14 913 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人