数据结构与算法

第一章  预备知识

一、使用数据结构的三个原因:效率,抽象,重用性。

二、算法设计的一般方法:1.随机法(eg:快速排序)

2.分治法:步骤:分解,求解,合并

                Eg:归并排序

3动态规划

4贪心法

5近似法

三、软件工程:模块化,可读性,简洁性,一致性

第二章  指针操作

存储空间分配:数据存储空间分配(1直接声明一个变量。2运行时动态的分配存储空间)

注:当声明一个指针时,仅仅只是为指针本身分配了存储空间,并没有为指针所引用的数据分配空间。

 

第三章  递归

一、基本递归:重复调用函数自身实现循环

二、尾递归:所有递归形式的调用都出现在函数的末尾

第四章  算法分析

一、最坏情况分析

二、O表示法:指明函数的上限值,表示算法增长规律的方法

三、复杂度:O表示法

第五章  链表

链表:一组元素以一种特定的顺序组合或链接在一起

一、单链表:单独指针

二、双向链表:两个指针,可正向,可反向

三、循环链表

链表的应用包括:邮件列表,滚动列表

第六章  栈和队列

定义:检索数据的常用结构

栈:后进先出

队列:先进先出

第七章  集合

特点:1无序2每个成员都只在集合中出现一次

第八章  哈希表

链式哈希表

开地址哈希表

第九章  树

二叉树:将结点按照层次结构组织起来的数据结构

树的周游算法:先序遍历(根,左子,右子),中序遍历(左子,根,右子),后序遍历(左子,右子,根),层级遍历(首先根,然后依次向下层处理,按照从左到右的顺序访问每层的结点)

树的平衡:满足所有树的叶子结点都在同一层上,或者所有叶子结点都在最后两层上,且倒数第二层是满的

第十章  堆和优先队列

堆:一种树形组织,使我们能够迅速确定包含最大值的结点。堆是一颗二叉树,子结点比父结点小的堆称为最大值堆,子结点比父结点大的值称为最大值堆

优先队列:从堆自然衍生而来的数据结构

第十一章  图

图:一种灵活的数据结构,一般作为一种模型用来定义对象之间的关联或联系。对象由顶点表示,而对象之间的关系或关联则通过顶点之间的边来表示

组成:顶点和边,顶点代表对象,边则建立起对象之间的关系或关联

第十二章  排序

一、      插入排序

从无序数据集中取出一个元素,扫描已排好序的数据集,并将它插入有序集合合适的位置上。不需要额外的存储空间,最佳应用场景是对一个小的数据集合进行递增排序

优点:当将元素插入一个有序数据集中时,只需要对有序数据集最多进行一次遍历,而不需要完整地运行算法。

二、      快速排序

       快速排序是一种分治排序算法,解决一般问题的最佳算法,同插入排序一样,快速排序也属于比较排序的一种,而且不需要额外的存储空间最佳应用场合是应用于大型数据集。

三、      归并排序

       归并排序是另一种运用分治法排序的算法,与快速排序一样,它依赖于元素之间的比较来排序,需要额外的存储空间来完成排序过程。最佳应用场合是超大数据集中。

分:将数据集等分为两半。

治:分别在两个部分用递归的方式继续使用归并排序法;

合:将分开的两个部分合并成一个有序的数据集;

四、       计数排序

       计数排序是一种高效的现行排序,它通过计算一个集合中元素出现的次数来确定集合如何排列,不需要进行元素比较。只能用于整型或者那些可以用整型来表示的数据集合。

五、        基数排序

        基数排序是另外一种高效的线性排序算法。方法是将数据按位分开,并从数据的最低有效位到最高有效位进行比较,依次排序,从而得到有序数据集合。

六、       二分查找

        

                        

posted @ 2016-03-29 18:27  一路向北GO  阅读(531)  评论(0编辑  收藏  举报