【数据结构】如何高贵优雅地理解什么是数据结构?

一坑没填

又进新坑......

不过这个坑迟早都要进的......

——————————————下面是正文————————————————

       文章开头首先了解下从百度百科上搜刮下来的一句计算机业界经典金句:

                                             算法+数据结构=程序

       ps:对于这个公式,其实个人(注意:是个人!!)更偏向于“程序=算法+数据结构”酱紫的表达,因为大部分的编程语言都是将赋值号右边的数据运算完成之后再赋值给赋值号左边的容器里,所以“程序=算法+数据结构”更能体现出这种含义~如果是“算法+数据结构=程序”给我的第一感觉是程序赋值给了算法+数据结构,编译还可能是错的hiahiahiahia~

       金句之所以可以成为金句,是因为程序即使千变万化,形态各异,但终究离不开一个最关键、最基本的功能:对数据进行处理。而如何对数据进行怎样的处理呢?这就是算法需要做的事情了。所以呀,能用一个公式就将一个这么抽象的东西概括起来,成为金句确实不为过~(在座的各位大佬们可以思考一下,各位以前写过的程序里面有多少程序是可以脱离数据的?大部分都是围绕着数据进行某些处理,而这个处理就是经过算法的啦~)

       说了这么多,其实还是不太懂得什么是数据结构,下面给出对我这种菜菜的人来说复杂又难懂的关于数据结构的概念:

        

       我在大学必修课里看过还有一种说法是(具体是哪本教材我也忘记惹):数据结构是数据以某种特定的方式组合在一起。

       下面给出一个例子,带各位高贵又优雅地了解数据结构是什么~

一.例子

       此时,某一无名大学终于完成了最后的期末考试,全校三万多人的成绩全部汇总到了教务处一名负责成绩登录的老师手中,那么这名老师该如果将着三万个人的成绩进行一个合理的汇总呢?此时有位老师说,你可以将这写数据全部放到一个Ecel表格里面就行啦~

       然后负责成绩登录的老师就微笑着照做了......

       第二天,高中部的老师突然发现自己改错了一名学生的成绩,所以要求负责成绩登录的老师将这名学生的成绩进行修改

       这时,负责成绩登录的老师慌了,因为自己手上只有三万个成绩,并不知道那个成绩是该名学生的,此时有位老师说,你应该将每个成绩都对应上学生的名字呀,这样才能知道成绩是谁的啦~

       然后负责成绩登录的老师就微笑着照做了......

       第三天,初中部的学生对自己的成绩有异议(60分),要求重新评分,评分老师重新评改后,给负责成绩登录的老师更新了一个新的成绩(59分)

       这时,负责成绩登录的老师慌了,因为自己手上的三万个成绩,如果要找到其中一个人的成绩,需要从第一个开始一直往下找,结果等负责成绩登录的老师找到那个学生的名字时已经是晚上了,此时有位老师说,你可以将成绩分高中部、初中部,这样查找就更方便啦~

       然后负责成绩登录的老师就微笑着照做了......

       第四天,初中部的老师猛地发现自己少给了一位同学的成绩,通知负责成绩登录的老师将这名同学的成绩加上去

       这时,负责成绩登录的老师慌了,因为根据Excel表格的特性,在某个位置添加一行表格虽然不是很难,但是后面的成绩就要全部往后退,那前面分类之类的又要全部进行修正,结果负责成绩登录的老师需要加班加点才能搞完。

二.总结

       综上所述,对于一堆数据,这里面有一个问题,就是如何高效地进行存储和表达,而这就是数据结构的一个最根本的问题。如以上例子所述,为了能够快速地对成绩进行查找、修改、增加或者删除,需将数据进行名字分类,班级分类以及年级分类等,使得数据具有规律性、便于查找性,而这种数据间相互存在着一种或多种特定关系的,称之为数据结构。为此,类似于“树”、“图”、“队列”这种数据结构就被探索出来,每种不同的数据结构都有自己的特定的有点,有些方便存储,有些方便添加数据~

三.优点

        数据结构最大的有点是可以提高解决问题的效率,如上例子所述,如果不将数据进行结构化的处理,那么当有问题需要使用到数据时,解决问题的效率就会非常低下。当然,提高解决问题的效率不单止数据结构,算法的灵活程度,代码空间的最大利用,都将影响到最后整个程序的效率,这个又是后话了~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章