写程序总结

来源:互联网 发布:淘宝交易号查询订单 编辑:程序博客网 时间:2024/05/20 11:51

 最近实现了一片学术文章上提出的算法,是关于连续属性离散化的,所用的理论支持是信息论中信息熵的概念。其实算法很简单,一两句话就完全可以搞定,可是在实际的编写过程中,还是出现不少问题的。

首先是数据定义的问题,之前有看过师兄写的关于离散化的算法,是自底向上的,里面最核心的就是定义了区间这一结构体,根据离散化算法通用的步骤,自顶向下的过程也是要定义区间结构体的。每个属性都应该有一天关于区间的链表,里面记录了区间开始点和结束点,以及下一个结构体的地址,另外,因为使用信息熵的概念,每个区间结构体里还应该有一熵值,使用该熵值来实现区间的分裂。

本科的时候学数据结构,是基于c++的,就是用面向对象的方法。在用结构化程序设计进行了一半时,我突然心血来潮想用类的概念来实现我要的算法。可在分析的过程中,总是把握不好类和类之间的关系,类内属性和方法的关系,最后也就半途而废了,又回头走上结构化的设计。这一失败使我知道:使用面向对象的程序开发方法对对象设计有很高的要求,在非常规对象的设计,如何把握好内部的数据定义和方法定义是首要的,切不可不进行全面的理解直接上手,这样的后果只能是半途而废。而对于结构化程序,只要对算法流程有一个清晰的认识,就可以一步一步来实现,用到什么功能实现什么功能,对于小程序而言,还是非常高效的。

在我的算法实现中,最难的莫过于两个方面:递归和指针。指针自不用说了,但是其灵活性也给我的程序编写带来了不少的便利。在编写过程中,我一直想绕开递归,因为我自认为我的逻辑理解能力不是很强,而递归算法是对逻辑的一个考验,但是,如果我不使用递归,而是使用循环的,可能会带来更大量的问题,我深刻地知道,递归才是我程序中最简练的实现方法。基于这点考虑,我开始在程序中实现递归。也算是功夫不负有心人,最后还是拿下了。

在写程序的过程中,有个bug花了不少时间去处理,而这个bug在我开始编写的过程中是正确的,在后来的修改和实现其他算法的时候,我又改错了,是从逻辑角度上改错了,而正是这个错误,让我浪费了不少的时间,虽然最后在调试的时候改过来了,但总让我觉得心寒,也奇怪当初自己怎么就那么轻易地把正确的就改错了呢?

总之呢,这个最基本的算法是实现了,以后的路是还很长的,需要添加和修改的东东也很多。程序虽然小(仅有300多行),而且属结构化编写,但花费的时间却远远超过我的预期。。不过,这次小小的成功,让我对写程序又重拾信心!!

原创粉丝点击