百科问答小站 logo
百科问答小站 font logo



如何学习数据结构? 第1页

  

user avatar   lokinko 网友的相关建议: 
      
数据结构是用来学习如何恰当选择数据的存储方式。
数据结构的产生是为了满足特定的存储要求。

常用的数据结构有:

线性结构:顺序表、链表、队列、栈等。

树状结构:二叉树、AVL树、红黑树、B树等。

图结构:无向图、有向图等。


很多地方都只讲了什么是数据结构,怎么实现数据结构,但是很少会有讲怎么理解这些数据结构以及为什么会出现这样的结构设计。

之前写过一篇类似的问题用例子的方式给大家讲解了一部分。

比如:

线性结构

顺序表 / 链表:

从常理上看,我们一般存放数据都是顺序表,例如 在图书馆检索对应内容的书籍时,我们会发现内容上相近的书往往在位置上也相近,这就给我们检索某方向内容时提供了便利。

但是当书堆了很高,而我们想要往里面放书的时候,我们要把盖在上面的大部分书移走,放完这本书后再把书移回来,可想而知,随着放的书越多,插入一本书花费的精力也就越多。

而链表就不一样,链表的设计理念更类似藏宝图之旅,首先你会获得一张藏宝图,

藏宝图上标注了第一个宝藏在哪里,你顺着 藏宝图的指引能够顺利找到第一个宝藏,然后每个宝藏里都保存了下一个宝藏在哪以及下一个宝藏是什么的信息,只有挨个往下找才能找到最终的宝藏。这样可以在任意两个宝藏之间加一个新宝藏,只需要改动相邻两个宝藏的信息就可以完成新元素的插入功能。

没有实际的实现需求的话,没有办法深刻理解数据结构对程序实现以及性能的影响。

最好先从不同结构的概念学起,在理解了基本结构后,尝试专门为这种结构设计一种应用场景来实现,最后多重复练习,回头看之前的结构实现有没有哪里写得繁琐或者不够完善的,再慢慢补充。


user avatar   eddymxf 网友的相关建议: 
       柏林墙推倒以后东西德真的彻底融为一体了吗? - 邹博文的回答

不是经济学专业,对两德合并无力回答,但是有关两德统一的公法事实的错误有必要指出。

现在讨论两德统一的问题。事实上,从来没有过两德统一,只有东德灭亡。1990年6月,东德政府决定引入西德马克来拯救陷入崩溃边缘东德经济。在之后的几个月内,由于经济无法改善,愤怒的人民走上街头,有良知的东德领导人们不愿意向人民开枪,政府迫于高压,自行解散。此时,1990年9月20日,全世界再也没有东德政府这个名词了。政府解散后,旧有各州纷纷独立,并最终仿照60年代萨尔州的例子,加入联邦德国,西德议会一一批准,才有了今天统一的德国。世界历史提到10月3日两德统一的日子,其实是照顾东德人民的感情。这在当时是联邦德国和几个州之间的事,东德政府已经在半个月之前不复存在了。

这一段不符合史实。东德政府并不是自行解散,而是根据两德条约的法定步骤,这是柏林墙倒塌后一步一步地来的。

1989年11月28日,西德总理提出分阶段建立德国邦联(还不是联邦)的计划。

1990年2月13日,华约与北约成员国外长会议做出决议,规定东德大选后成立的新东德政府就可以开始统一谈判。

1990年3月18日,东德举行大选,西德基民盟支持的东德“德国联盟”获得胜利,成立了新的东德政府。此时的东德实际上已经不是彼时的东德了,“有良知的东德领导人们”的几句话无从说起。

1990年5月18日,两德政府签订了第一个国家条约,确定了货币、经济和社会的联盟。货币联盟于7月1日起生效。

1990年8月3日,两德政府签订在两个德国境内举行全德议会选举的准备与实施协议。这个协议又于8月28日得到修改。

1990年8月23日东德国会通过了东德各州以州的身份加入联邦德国的决议。根据这个决议,为了符合基本法的规定才按照德国传统上的划分恢复各州;早前的1952年,为了便于统治,东德的历史上的5个州被划分为13个专区。这也是形式上的,东德五州真正建立起民选政府是统一之后的事情了,各州纷纷独立的说法无从说起。直到统一后的1990年10月13号,东德五州才进行了第一次州选举。

1990年8月31号由两德签署第二个国家条约确认两德统一,这个条约确定了两德统一的具体形式是东德解体、以各州的名义分别加入联邦德国。(Vertrag zwischen der Bundesrepublik Deutschland und der Deutschen Demokratischen Republik über die Herstellung der Einheit Deutschlands;Treaty between the Federal Republic of Germany and the German Democratic Republic on the Establishment of German Unity)

然后两德同四个占领国进行谈判,并于1990年9月12日签订有关修改德国国际法地位的“二加四协议”。

总结:东德政府解散并不是崩溃式的,而是根据相关宪法性法律和国际条约进行的法律步骤。

参考资料:康拉德·黑塞,商务印书馆,《联邦德国宪法纲要》第68-74页。(Grundzüge des Verfassungsrechts der Bundesrepublik Deutschland, 20. Auflage, Heidelberg 1995 (Neudruck 1999),pp95-98)

德国自神圣罗马帝国崩溃后的统一问题,政治学和国际关系上被称为German Question。可以去Google Scholar查找。

手边有两本英书可以推荐。

Peter Alter的《The German Question and Europe:A History》和Dirk Verheyen的《The German Question:A Cultural, Historical and Geopolitical Exploration》

中文书可以参考玛丽·弗尔布鲁克的《德国史:1918-2008》

这几本书的最后几章都是讨论两德统一后的政治、经济与社会状况,写作的年代也比较新,都是2000年之后写成或者最新修订的。


user avatar    网友的相关建议: 
      

MacBook Pro (从定位上来说)本来就是干活用的机器。说实话,用来娱乐,很可能还不如买台 iPad 好使——起码 iOS 上的娱乐应用生态还算是不错。

OS X 和 Windows 的软件不相兼容,这恐怕是购买一台 Mac 前最先要了解的事情。如果不先为此做好心理准备就兴冲冲地去买 Mac, 还是 MacBook Pro, 要么是被无良的店员坑了,要么是作为消费者太不谨慎了。

说回「OS X 有什么好」——对我而言:

  • 字体。我选择使用 Mac 的最主要原因,是 OS X 的字体渲染风格更对我胃口——即便我使用的是低分辨率屏的 2012 版 MacBook Pro。虽然 Windows 能使用 MacType 这样的插件来改变字体渲染风格,但在最近版本的 Windows 中,也已在很多场合下失效。
  • 对于设计而言的一点便利功能。包括而不限于「预览」能够以真实尺寸显示 PDF、更全局的 OpenType 特性支持、便利的 PDF 虚拟打印等。
  • 可用性不错的自带软件。
  • 此外,对于程序员而言,OS X 应该算是个不错的 UNIX 环境。

我学习需要使用的主要工具都可以在 OS X 中使用,而不能满足的那部分,用虚拟机也可以挺流畅的解决,而我并没有「杜绝在 Mac 上使用 Windows」的那种精神洁癖,所以用得挺舒服;加上对我而言,娱乐多是可以通过浏览器解决的事情,要玩点游戏,也有 Steam 和虚拟机。因此我不觉得 Mac 在娱乐上有什么特别大的问题。当然,这也只适用于我自己了。

* * * * * *

在 Mac 上装 Windows 没什么不好的,这本来就是苹果允许、并用以吸引新用户的手段,Windows 也是个好使的操作系统。就是续航会短,发热也相对厉害一些。此外,屏幕色彩可能需要加载色彩配置文件来改善。前两年 MacBook Pro 还被评为「最合适使用 Windows 的电脑」。只是,最好装 Windows 8 或 Windows 10——Windows 7 虽然是个好系统,但对 HiDPI 的支持不足会浪费了那块 Retina 屏。

如果还是绕不开「花大价钱买了屌丝机」的心理,那么趁早出了止损还好。亏钱无可避免,但好歹不会用着心塞。不过,现在达到 MacBook Pro 这个标准(硬件、设计、工艺)的 PC 笔记本,也不便宜得去哪里就是了。

谢谢邀请。




  

相关话题

  如何看待国内地图行业更新政策商用api每年需支付5w元? 
  亲爱的程序员们,一天写多少代码才算达标? 
  该怎么给程序猿定 KPI ? 
  程序员年龄增大后的职业出路是什么? 
  cv/nlp等方向的就业困难是全球性的吗? 
  计算机专业大一寒假该如何规划? 
  为什么要把程序写死? 
  ios编程是吃青春饭吗? 
  辛苦看书、写代码一天怎样才能高效休息? 
  计算机专业想好好搞科研读博士,建议平时刷 leetcode 吗,会不会浪费时间? 

前一个讨论
目前哪里可以租用到GPU服务器?
下一个讨论
知乎上回答的阅读数、赞同数、喜欢数、评论数和收藏数之间有什么统计规律?





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利