摘要: 归并排序的基础概念就不讲了,我的博客只会写有创造性的东西。 归并排序的代码如下: 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 阅读全文
posted @ 2016-03-21 21:46 w43076 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 二叉树的输出,最简单的方法,就是下面这个: void puttree(tree t){ if(t==NULL)return; else{ puttree(t->left); printf(“%d ”,t->data); puttree(t->right); } } 以这棵树为例,输出的是1 3 4  阅读全文
posted @ 2016-03-19 21:44 w43076 阅读(1188) 评论(0) 推荐(0) 编辑
摘要: 哨兵,顾名思义,是用来解决国家之间边界问题的,不直接参与生产活动。 同样,计算机科学中提到的哨兵,也用来解决边界问题。 在许多算法中,存在“邻居依赖问题”(我自己造的词),在处理当前元素时,要涉及到它旁边那个元素。那如果当前元素是边界元素呢,它没有旁边那个元素,如果不作处理,程序就可能出错;如果对它 阅读全文
posted @ 2016-03-17 20:27 w43076 阅读(374) 评论(0) 推荐(0) 编辑
摘要: 差一错误是所有程序员的噩梦! 它看起来是一个琐碎的问题,却非常烦人,许多程序员对它是采取一种“轻蔑”的态度,即使被它虐了千百遍,还是不愿意正视这个问题。 其实,差一问题并不是一个小问题,我们应该对它给予足够的重视。 在《C陷阱与缺陷》中,对这个问题有详细的讨论,这里结合我的理解写一写解决这个问题的方 阅读全文
posted @ 2016-03-14 22:02 w43076 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 鉴于行业内对递归存在许多误解和疑惑,这里我想结合算法分析,写一个系列关于递归和算法分析的博客。 在这一章,我们要讲的是递归的形式和思维方法,在后面的章节里,我们会讲到时间复杂度和空间复杂度的分析,在那里我们就会看到,并不是什么递归函数都效率低,都会溢出。 概念背得再熟,你也不会写! 请写出这个函数 阅读全文
posted @ 2016-03-13 15:29 w43076 阅读(232) 评论(0) 推荐(0) 编辑