zoukankan      html  css  js  c++  java
  • 四 数据结构与算法总结(一)

    转载:http://blog.csdn.net/jie1991liu/article/details/8167194

    一.数据结构部分

    1.数组和链表的区别:

    C++语言中可以用数组处理一组数据类型相同的数据,但不允许动态定义数组的大小,即在使用数组之前必须确定数组的大小。而在实际应用中

    ,用户使用数组之 前有时无法准确确定数组的大小,只能将数组定义成足够大小,这样数组中有些空间可能不被使用,从而造成内存空间的浪费

    。链表是一种常见的数据组织形式,它 采用动态分配内存的形式实现。需要时可以用new分配内存空间,不需要时用delete将已分配的空间释放,不会造成内存空间的浪费。
      
    从逻辑结构来看:数组必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况,即数组的大小一旦定义就不能改变。

    当数据增加时,可能超出原先 定义的元素个数;当数据减少时,造成内存浪费;链表动态地进行存储分配,可以适应数据动态地增减的情况,

    且可以方便地插入、删除数据项。(数组中插入、删 除数据项时,需要移动其它数据项)。  
      
    从内存存储来看:(静态)数组从栈中分配空间(用NEW创建的在堆中), 对于程序员方便快速,但是自由度小;链表从堆中分配空间, 自由度大但是申请管理比较麻烦.

    从访问方式来看:数组在内存中是连续存储的,因此,可以利用下标索引进行随机访问;链表是链式存储结构,在访问元素的时候只能通过线性的方式由前到后顺序访问,

    所以访问效率比数组要低。

     

    2.链表的一些操作,如链表的反转,链表存在环路的判断(快慢指针),双向链表,循环链表相关操作。

     

    3.队列(特殊的如优先级队列),栈的应用。(比如队列用在消息队列,栈用在递归调用中)

     

    4.二叉树的基本操作

    二叉树的三种遍历方式(前序,中序,后序)及其递归和非递归实现,三种遍历方式的主要应用(如后缀表达式等)。相关操作的时间复杂度。

     

    5.字符串相关

    整数,浮点数和字符串之间的转换(atoi,atof,itoa)

    字符串拷贝注意异常检查,比如空指针,字符串重叠,自赋值,字符串结束符'/0'等。

     

    二.算法部分

    1.排序算法:

        排序可以算是最基本的,最常用的算法,也是笔试面试中最常被考察到的算法。最基本的冒泡排序,选择排序,插入排序要可以很快的用代码实现,

        这些主要考察你 的实际编码能力。堆排序,归并排序,快排序,这些算法需要熟悉主要的思想,和需要注意的细节地方。需要熟悉常用排序算法的时间和空间复杂度。

     

     

    各种排序算法的使用范围总结:

    (1)当数据规模较小的时候,可以用简单的排序算法如直接插入排序或直接选择排序。

    (2)当文件的初态已经基本有序时,可以 用直接插入排序或冒泡排序。

    (3)当数据规模比较大时,应用速度快的排序算法。可以考虑用快速排序。当记录随机分布的时候,快排的平均时间最短,但可能出 现最坏的情况,

            这时候的时间复杂度是O(n^2),且递归深度为n,所需的栈空间问O(n)。

    (4)堆排序不会出现快排那样的最坏情况,且堆排序所需的辅 助空间比快排要少。但这两种算法都不是稳定的,

          若要求排序时稳定的,可以考虑用归并排序。(5)归并排序可以用于内排序,也可以用于外排序。在外排序时, 通常采用多路归并,

    并且通过解决长顺串的合并,产生长的初始串,提高主机与外设并行能力等措施,以减少访问外存额次数,提高外排序的效率。

     

    2,查找算法     能够熟练写出或者是上机编码出二分查找的程序。

    3.hash算法

    4.一些算法设计思想。

    贪心算法,分治算法,动态规划算法,随机化算法,回溯算法等。这些可以根据具体的例子程序来复习。

    5.STL

    STL(Standard Template Library)是一个C++领域中,用模版技术实现的数据结构和算法库,已经包含在了C++标准库中。

    其中的 vecor,list,stack,queue等结构不仅拥有更强大的功能,还有了更高的安全性。除了数据结构外,STL还包含泛化了的迭代器,

    和运行在 迭代器上的各种实用算法。这些对于对性能要求不是太高,但又不希望自己从底层实现算法的应用还是很具有诱惑力的。

  • 相关阅读:
    PAT (Advanced Level) 1060. Are They Equal (25)
    PAT (Advanced Level) 1059. Prime Factors (25)
    PAT (Advanced Level) 1058. A+B in Hogwarts (20)
    PAT (Advanced Level) 1057. Stack (30)
    PAT (Advanced Level) 1056. Mice and Rice (25)
    PAT (Advanced Level) 1055. The World's Richest (25)
    PAT (Advanced Level) 1054. The Dominant Color (20)
    PAT (Advanced Level) 1053. Path of Equal Weight (30)
    PAT (Advanced Level) 1052. Linked List Sorting (25)
    PAT (Advanced Level) 1051. Pop Sequence (25)
  • 原文地址:https://www.cnblogs.com/xiaofei76/p/5497594.html
Copyright © 2011-2022 走看看