从原型开始设计一个程序

从原型开始设计一个程序

Step1:得到需求

这一部分往往是口语化的,需要程序员对需求进行进一步的分析

Step2:严格描述问题

严格描述问题是确保算法的确定性的必要条件

可以采用伪代码和文字来对问题进行描述,保证算法的能行性和有穷性

Step3:将问题抽象

问题抽象出来,因为只能解决一个实例的算法并没有什么意义,需要算法程序能够解决同类普遍性问题。第2、3步没有严格的顺序

Step4:列出一个实例,并画出关系图

这一步尤为重要,不同的关系图会形成不同的数据结构以及涉及到不同的算法

Step5:将关系图抽象,设计数据结构

数据结构即包含了数据与数据之间相互关系的结构

Step6:考虑时间复杂度和空间复杂度,设计算法

  • 时间复杂度

    时间复杂度描述了一个算法随着计算规模增大而使用的计算时间,是一个关于计算规模的时间函数,一般用时间函数的同阶无穷小来表示,也就是大‘O’记法,

  • 空间复杂度

    空间复杂度代表算法程序在运算过程中需要占用的内存单元,此函数与时间复杂度类似

Step7:根据实际需求,选择相应算法,可以不是最优但是一定要适合

有些时候并不要求最优解,因为可能需要更大的算力,服务器无法达到,所以需要牺牲一些精确度等等

Step8:设计测试用例,运行程序

程序编译完成后,并不代表可以发布,要根据实际情况设计测试用例,若未能达到需求或者需要优化则需要更改相应部分的算法或设计更为简洁的数据结构。

Step9:若满足要求则发布程序、否则循环上述步骤

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,793评论 1 32
  • “你对我说一句晚安 夜就过了一半”
    银杏姑娘阅读 3,757评论 0 0
  • 近期朋友圈已被川大的"玻璃杯"事件刷屏,事情的原委很简单,一个妹子在图书馆看到一枚长的漂亮的小哥哥想上前搭讪却又苦...
    腹黄阅读 3,161评论 0 2
  • 女孩,你好。不要当别人的公主,做自己的女王好吗。 我在不同的瞬间有不同的梦想,我张扬,我坚强,我还有很多不可思议的...
    草戊阅读 2,325评论 0 0