什么是杭州【那里有一汪爱情水】
江南忆,最忆是杭州,当唐朝的白乐天这样怀念江南烟雨时,杭州还不过是个因为京杭大运河的贯通,鱼米之乡的后起之秀。那时还没有雷峰塔六和塔,西湖不过是片水汪子,没有苏堤杨公堤,没有长桥断桥,更别提西湖十景,那时只有飞来峰下的灵隐寺,野山上开满了桂花,凤凰山下的钱塘江河道还飘忽不定,所以怀旧的白乐天只能,山寺月中寻桂子,郡亭枕上看潮头。
在中国,六百多座城市,有可以叫大的,有可以叫雄的,有可以叫魔的,有可以叫秀的,但只有杭州可以叫美,美到骨子里,美到天堂级的那种,所以,人间天堂在苏杭。
杭州的美,最躲不过的是西湖。历史名人在黄鹤楼迎来送往,诗赋满天飞,遂成天下第一楼;历史名人在西湖重视环境建设,湖光山色美,遂成天下第一湖。
唐朝的白乐天在杭州修筑西湖堤防,疏浚六井,闲来游湖写下,最爱湖东行不足,绿杨阴里白沙堤,为纪念白居易,白沙堤成了白堤;北宋的苏东坡在杭州疏通河道堰闸分潮,挖淤造堤,欲把西湖比西子,浓妆淡抹总相宜,长堤成了苏堤;明朝的杨孟瑛在杭州驱逐湖霸豪强,还湖与民,清淤筑堤,十二桥头日半曛,酒垆花岸其氤氲,始是杨公堤;清朝的阮元巡抚杭州时,疏浚西湖,积淤成岛,草木葱葱起丹鹤,碧波粼粼潜鱼龙,始成湖心三岛之一阮公墩。
不但历史名人爱在西湖搞建设,而且才子佳人美妖艳姬爱在西湖边谈情说爱。梁山伯祝英台在万松书院,卿卿我我;白娘子许仙在断桥花伞下,一见钟情;苏小小和公子情郎在西泠桥畔,风花雪月。
如果你爱她,送她一大捧玫瑰,博芳心;如果你爱她,给她买钻戒,恒永久;如果你爱她,带她来西湖,爱情湖。西湖是爱情之湖,杭州是爱情之都。
可是,玫瑰放不了几天就枯萎,钻戒用火一烧就气化成二氧化碳,这些发生在西湖的爱情故事也都没有几个好下场。梁山伯祝英台双双化蝶去,白娘子与许仙人妖两别,至今还压在雷峰塔下,情郎薄情苏小小,红颜早早香消玉殒。
就像那句幸福的家庭都是相似的,不幸的家庭各有各的不幸一样,甜蜜的爱情大都雷同,凄婉的爱情各有各的凄美。
不但西湖的爱情多凄美,前面提到的那些名人也多悲怆。白居易在朝中做中书舍人做的不开心被排挤,郁郁不得志,才外放到杭州修西湖;苏东坡喜欢边修西湖,边在山石亭台筑碑题字,他想不到的是,多少年后他上了元祐党人黑名单,杭州人遍寻他的题字,销毁的一干二净。杨孟瑛修杨公堤,得罪了豪强显贵,被人下套诬告,落得个贬官落罪的下场。
包括在杭州建都的那些王朝,春秋战国时的吴越,五代十国时的吴越,偏安江南的南宋,盛世的表面下都潜伏着风雨飘摇的不安,隐藏着山河破碎的征兆,在水光潋滟晴方好,山色空蒙雨亦奇的同时,总有西湖歌舞几时休,直把杭州作汴州的隐忧。
感知天堂的美,触碰杭州的艳,就要去试图懂得:江南烟雨下的悲怅,诗情画意中的凄美,风花雪月里的阴柔,太平盛世下的忧思!
# Meta
- 这部剧太水了, 用来做数据结构和算法的入门都难以做到
- 充斥着一种我若是买了纸质书, 我就是冤大头的feel
- 于我而言唯一的亮点在快排引出的快速选择算法
# Text
- (https://weread.qq.com/web/reader/689329a0718ff663689395dkc81322c012c81e728d9d180)
### C1-C6 大O, 几种排序算法
-C1 数据结构为何重要
- 数组, 读取, 查找, 插入, 删除
- 集合, 不允许有重复元素, 插入前需要查找一遍看看是否已有
- 国外的算法数, 对数据结构的分类和我熟悉的那一套稍有不同
---
- C2 算法为何重要
- 查找有序数组, 线性查找vs二分查找
- 前面的内容比较水, 难以为一章, 再往后看看
---
- C3 大O记法
- “大O记法可用来描述一个函数的增长率的上限”,或者“如果函数g(x)的增长速度不比函数f(x)快,那么就称g属于O(f)”
- 若无特别说明,大O记法一般都是指最坏情况。因此尽管线性查找有O(1)的最好情况,但大多数资料还是把它归类为O(N)
- 对数时间, O(logN)意味着该算法当数据量翻倍时,步数加1, logN其实指的是log_2 N, 省略了2
- log_2 8 可以表达为:将8不断地除以2直到1,需要多少个2
---
- C4 运用大O来给代码提速
- 冒泡排序, 比较次数n^2, 交换次数n^2
---
- C5 用或不用大O来优化代码
- 选择排序, 比较次数n^2, 交换次数n, 选择比冒泡快
- 大O记法忽略常数
---
- C6 乐观的调优
- 插入排序
- 大O只保留最高阶的N
- 最坏情况(完全逆序的序列), 冒泡n^2, 选择n^2/2, 插入n^2+2n-2
- 选择排序是无论何种情况,最坏、平均、最好,都要N2/ 2步。因为这个算法没有提早结束某一轮的机制,不管遇到什么,每一轮都得比较所选索引右边的所有值
### C7-C10 散列表, 栈和队列, 递归, 快排
- 将字符串转为数字串的过程就是散列,其中用于对照的密码,就是散列函数
- 既要避免冲突,又要节约空间
- 数据量与格子数的比值称为负载因子
- 快速排序严重依赖于分区, 它的运作方式如下所示
- 把数组分区。使轴到正确的位置上去
- 对轴左右的两个子数组递归地重复第1、2步,也就是说,两个子数组都各自分区,并形成各自的轴以及由轴分隔的更小的子数组。然后也对这些子数组分区,以此类推
- 当分出的子数组长度为0或1时,即达到基准情形,无须进一步操作
- 快排, 平均O(NlogN), 最坏O(N^2), 但是稳定
- 利用快排分区的思想, 可以写快速选择算法, 选出数组中第n大的元素
- 比如我想找第3小的元素, 做一次快排的分区, 如果轴是第5小位置, 说明第3小一定在左面, 右面的那半就不要了
### C11-C15
- 链表, 二叉树, 图, 空间复杂度
- 太水了