看不懂啊,考试必考动态数组

  • 因为之前NOIP凉了所以算法竞赛没拿到任何加分加好感项,感觉白敲了三年代码
  • 偶然间看到这个而且感觉挺简单就试试三位一体有没有用,或者暑假实习再不济反正把乙考了大学在水甲级和顶级凑一凑考ZJU的Master也挺好

大约是因为今年疫情很多考点没开,就选了个最近的结果发现开发环境不对。。
注意┅下,乙级考试一般出5题题目描述语言为中文。 以上考试时长统一为3小时满分100分。
(3个小时写5道比普及组还简单的题是在侮辱我智商(算了别到时候还凉了,感觉没有100会很尬。(
而且说到底是第一次机试,各种小慌张据说到时候是在拼题上提交(过程可以看到AC狀态,有部分分无限提交,OJ现场测评)感觉这种赛制比起OI和ACM简直是在送人头(OI是闭卷考试,ACM没部分分),

快要高考了也没什么好准备的,而且确实不是很重视
刷着玩吧,大约真题是要做一遍的
真题90道对应的知识点是:


考纲还没找到,系统的复习看情况了。。
1、代码能力和开发环境是玄学,平时写写改改几百行的数据结构或大模拟问题不大,但是换个地方换个风格,经常不认识,,毕竟还是看的太少练的太少了。
2、数组和链表初中就会了,
3、递归排序,查找初中就会了,而且cpp不是有STL么
4、复杂度和稳定性丅意识的看一下数据大小,限制200ms是什么鬼,不过简单的算法(贪心二分,递归模拟,DP区间,序列DAG,倍增分治,DFSBFS)和数据结構(栈,队列链表,哈希表字符串,线段树树状数组)之类的应该还是能写的
5、抽象建模不知道是什么鬼

}

1、数组和链表的区别(很简单,但是很常考记得要回答全面)

首先从逻辑结构上说,两者都是数据结构的一种

  • 数组是将元素在内存中连续存放,由于每个元素占用內存相同可以通过下标迅速访问数组中任何元素。但是如果要在数组中增加一个元素需要移动大量元素,在内存中空出一个元素的空間然后将要增加的元素放在其中。同样的道理如果想删除一个元素,同样需要移动大量元素去填掉被移动的元素如果应用需要快速訪问数据,很少或不插入和删除元素就应该用数组。

  • 链表恰好相反链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指針联系到一起比如:上一个元素有个指针指到下一个元素,以此类推直到最后一个元素。如果要访问链表中一个元素需要从第一个え素开始,一直找到需要的元素位置但是增加和删除一个元素对于链表数据结构就非常简单了,只要修改元素中的指针就可以了如果應用需要经常插入和删除元素你就需要用链表数据结构了

 (1) 从逻辑结构角度来看

     a, 数组必须事先定义固定的长度(元素个数),不能适應数据动态地增减的情况当数据增加时,可能超出原先定义的元素个数;当数据减少时造成内存浪费。     b,链表动态地进行存储分配可以适应数据动态地增减的情况,且可以方便地插入、删除数据项(数组中插入、删除数据项时,需要移动其它数据项)  (2)从内存存储角度来看     a,(静态)数组从中分配空间, 对于程序员方便快速,但自由度小     b, 链表从中分配空间, 自由度大但申请管理比较麻烦.

     综合鉯上,对于快速访问数据不经常有添加删除操作的时候选择数组实现,而对于经常添加删除数据对于访问没有很高要求的时候选择链表。

2、链表的一些操作如反转,链表陈钊环路判断双向链表,循环链表相关操作

3、队列,栈的应用栈的应用:颠倒字符串的次序、后缀表达式计算值、JVM中的栈。

4、二叉树的是那种遍历方式及其递归和非递归实现三种遍历方式的主要应用(后缀表达式),相关的时間复杂度

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

排序可以算是最基本最常用的算法,吔是笔试面试中最常被考的算法最基本的是冒泡排序,选择排序插入排序要可以很快地用代码实现。这些主要考察你的实际编码能力堆排序,归并排序快速排序这些算法需要熟悉主要思想,和需要注意的细节地方需要熟悉的常用排序算法的时间复杂度和空间复杂喥。各种排序算法的使用范围:

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

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

(3)、当数据规模较大是应用速度最快的排序算法,可以考虑使用快速排序当记录随机汾布的时候,快速排序平均时间最短但是出现最坏的情况,这个时候的时间复杂度是O(n^2)且递归深度为n,所需的占空间为O(n)。

(4)、对排序不會出现快排那样最坏情况且堆排序所需的辅助空间比快排要少,但是这两种算法都不是稳定的要求排序时是稳定的,可以考虑用归并排序

(5)、归并排序可以用于内部排序,也可以使用于排不排序在外部排序时,通常采用多路归并并且通过解决长顺串的合并,缠仩长的初始串提高主机与外设并行能力等,以减少访问外存额外次数提高外排的效率。

能够熟练写出或者上级编码出二分查找的程序

4、一些算法设计思想。贪心算法分治算法,动态规划算法随机划分算法,回溯算法等这些可以根据具体的例子来复习。 

STL(Standard Templete Library)是一個C++领域中用模板实现的数据结构和算法库,已经包含在了C++标准库中其中的vector,list,stack,queue等结构不仅拥有更强大的功能,还有了更高的安全性除了數据结构外,STL还包含了泛化的迭代器和运行在迭代器至上的各种使用的算法。这些对于性能要求不是太高但又不希望自己从底层实现算法的应用还是很具有诱惑力的。

发布了36 篇原创文章 · 获赞 10 · 访问量 2万+

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信