《解忧杂货店》读书笔记

5个故事,都很独立却又互相关联,作者东野圭吾功夫果然深啊。
第一个故事,是梦想与爱情的冲突。一个有机会参加奥运会的女运动员,男友的了不治之症。而他们的共同梦想就是奥运会。当梦想与爱情看似冲突的时候,我们该怎么办,该怎么选?好难的问题,读书的时候,我也不知道自己遇到这样的难题该怎么选。而作者告诉我们了,跟随自己的心。解忧杂货店中的三个小男孩给出了未来的预兆,可是女运动员没有按照预兆去做准备,反而继续为奥运会做准备,因为她知道这是她最初的梦想,这是她的本心,他的男友是真的爱她。我知道你心里最想要什么,我不会因为自己耽误你的梦想。这就是真正的爱情,就像天外飞仙中董永的二姐与夫子之间最后离别的时候,都对对方说了一句,我不爱你。转身离去时,脸庞竟挂着微笑。我懂你,你也懂我。你懂我的,我懂了。我懂你的,你也懂了。不言之中,方现爱情。并不是什么好聚好散,而是即使天各一方,我扔挂心与你,心中知道你在追求自己的本心,我不成为你的挂碍。这是一种境界,互相信任,互相祝福。这是最自由的爱情,是一种超越的爱情。
第二个故事,是梦想与亲情和现实之间的冲突。音乐人,追求梦想多年却一事无成。但是他仍然坚持自己的梦想,选择去孤儿院为孩子们歌唱,演奏。父母的爱,真是天地大爱。父亲即使面对压力也不愿让孩子放弃梦想来接任鱼店。即使面对亲戚的冷言冷语,仍然会支持自己的孩子。生前未能扬名,身死之后,音乐得以广泛流传。这是真正的艺术家,真正的艺术总是能够打动人心。
第三个故事,可以算作主线剧情吧。讲述了杂货店店主的故事,并为后文埋下了伏笔。第三个故事,将整本书的故事情节全都穿在了一起,交代前因,引出结果。第三章讲了一个道理,人们在向其他人说出自己的忧虑和艰难的选择时,往往心里是有答案的。自己的心就是对自己的路最好的指引。
第四个故事,是对家人的爱与信任的故事。一个富家公子,家庭没落,举家逃亡。孩子因为对父母的不理解选择了离开父母,并一直怨恨着父母。直到后来,发现了自己的父母当年为了掩护自己选择了自杀,才感受到父母的爱。我们童年的时候是不是都会与父母有些怨恨,有些解开了,有些没解开。但是父母内心深处永远有一颗保护孩子的心。当指代这个道理的时候,我们可以尝试着去理解父母,尝试着换位思考。换位思考是件不容易的事,要把自己完全放在对方的角度去看问题。换位思考的结果就是,我们常常会发现,如果我是对方,我跟他或她境遇相同,我未必会比他(她)处理地更好。
第五个故事,是书的结尾,讲述了一个误入歧途的女孩得到了解忧杂货店中三个未来的小男孩的指引之后改变命运的故事。而正式由于女孩的命运的改变造成了三个小男孩的现状。人与人之间是会相互影响的。就像迷路的小狗(改变命运的小女孩的笔名),她在被绑架之后,想到了自己是不是对店铺老板太不宽容。也许我们些许的善意就会改变别人的一生。

《动物庄园》读书笔记

动物庄园影射了政治,是一本讽刺意味很浓的书。关于政治的剖析,网上已经有了很多了。我是一个不太关注历史的人,好吧,以后会多看点历史书。所以,也没有办法搞清楚作者书中所影射的历史人物或者历史事件。在这篇评论里,我简单分析下人性吧。

作者以动物寓人,将人性剖析的淋漓尽致。理想是美好的,但是当你站到一个高度的时候,还记得当初的理想吗?猪在本书里是贪婪的形象,人在现实中是不是也是这样?我不由得对自己的本性产生了很严重的怀疑,如我我是那只猪,那只名叫拿破仑的猪,我会让动物庄园如何发展?

按照我的设想,我一定会尽心尽力地带着其他的所有动物们一起努力,建设好自己的家园。但我的理想可以实现吗?其实不一定,书中的曾经跟拿破仑一样平起平坐的另一只猪就是最好的论证。

再说说从其他动物身上得到的启示吧。除了猪之外,所有的动物都有一个共性,就是不爱思考,不爱质疑,心甘情愿地接受着不知真假的各种命令和信息。这是非常可怕的一件事,让别人替代自己思考。

写到这里,不禁想起了前几周看完的《悟空传》和前几天看完的《西游日记》,主角孙悟空和金蝉子都是苦苦追求答案的人,思考着却也苦苦追寻着。他们是痛苦的,因为不知道路怎么走,也不知道路的尽头是否有答案,但正是因为有这样的人的存在,生命才让人敬畏。缺少思考的生命如枯萎的花朵,徒有其表却没有芬芳的灵魂。

珍惜自己的梦想,珍惜自己的理想。但也要理性地去质疑,时刻反思,自己在追寻的是正确的吗?不忘初心,最初为了什么而出发,你还记得吗?你能保证自己不忘吗?

《西游日记》读书笔记

——“师父,我们要去哪儿?”我问。
——“我不知道。”
——“那我们为什么还要走下去?”
——“因为不能停下。”



一个人要走多少路,才能成为男子汉。
一只白鸽要飞过多少个海洋,她才会躺于沙滩上。
一座山要矗立多少年,它才会被冲刷到大海。
一群人要生存多少年,他们才会获得自由。



今何在西游三部曲的第二部,少了些锋芒,却更加地鲜血淋漓。作者用幽默的语言在化解他想表达的黑暗却真实的西游。他将西游重构了一遍,以唐僧的日记的形式来描写西游。在这个西游里,妖怪不为唐僧肉而抓唐僧,反而为了为了唤醒孙悟空的记忆。
白骨精的死让人怜惜,牛魔王与铁扇公主的死让人感觉悲壮。孙悟空最终选择结束自己的生命来知道一切的真相。自毁修行,重入轮回,为的是求一个答案。
少了大闹天宫的经典剧情,便少了一份豪情。没有记忆,却有感情。我无法体会孙悟空埋葬白骨精时的心情。但我却觉得白骨精是幸福的,她最终如愿以偿,用自己的生命给孙悟空一个离开西游重返花果山的机会。
书中有一个道理,你不自救,没有人能救你。不禁想起最近追的韩剧《不死神灵》里面有一个桥段。一个凡人着急找茅厕,竟然打开了只有亡灵才能打开的死亡使者办公室。人类的意愿是很强烈的,强烈到可以创造奇迹。
我做不到唐僧、做不到孙悟空,只愿立下一个小愿,当我可以掌握自己的命运,甚至掌握他人的命运时,不做剥削。
作者揭示的现实是残酷的,但是作者的心却是乐观的。没有人知道路该怎么走,但是重要的是路本身而不是终点。常怀积极的心,真正的乐观,是你在见识到了世界上最漆黑的夜之后,仍然相信天会亮,相信天亮之后会很美。
我们改变不了时间,改变不了规则,可以改变的只有自己的心,是经历了无数黑夜之后,仍然不悔地相信希望,相信明天的心。明天,也许我看不到,但天终会亮,也终将有人看到天亮。

牧羊少年的奇幻之旅-读书笔记

读书感悟


童年的梦,你还记得吗?
我们的梦或许不是去挖掘金币宝石这样的宝藏
而是成为更好的我们自己


儿时的梦想非常的简单、朴实
就是希望没有作业,可以天天玩
就是希望能够考入一所理想的大学
然而现在大学即将毕业,新的征程即将开始了
新的梦又是什么呢?


书中说的很好:
当一个人真心渴望某样东西时,整个宇宙都会联合起来帮助他完成梦想。
书中教导我们要去追寻自己真正喜欢的东西,
因为这是自己的天命


男孩很幸运,
因为在他年少时遇到了启发他一生的人生导师——国王
国王告诉他天地之心,告诉他要追寻梦想。


水晶商人的梦想是去宗教圣地朝圣
可是他连第一步都没有迈出,
当他想要迈出的时候,
为时已晚。


男孩在水晶店赚足了钱,
他本可以继续留在那里工作,
他会赚很多钱,买更多的羊
但是他却选择了再次启程
因为他知道自己的天命,知道自己想要什么。


英国的想成为炼金术士的人,
他的天命就是成为炼金术士
为此他读了无数的书却不得其法
真正的炼金术士给他的启示却是,去做,也只需要去做
仰望星空也需要脚踏实地嘛
理论水平再高也得去实践


沙漠里的女孩是男孩心爱的姑娘
女孩也钟情男孩
女孩支持男孩的梦想,甚至比男孩还要坚定
对女孩讲,遇见男孩就是她的天命
爱并不会阻碍一个人去追寻他的天命
还记得小时候看胡歌的电视剧——天外飞仙
里面有一句很经典的台词——爱到不爱才是真爱
因为,我不会让我的爱成为束缚你的理由


男孩遇到的最后一个人是炼金术士
如果说国王给了男孩世界观,
那么炼金术士则给了男孩方法论
他教会了男孩如何运用自己的本心
告知了他宝藏的方向


然而,最后男孩的宝藏居然藏在了自己的家乡
这里蕴含了好多道理,也许最珍贵的东西就在自己身边
男孩走了一大圈却又回到原点,那他是不是白走了?
人生是不是也是这样?我们终究是空手来空手走
这一遭也是闭合的圆。那我们是不是就可以不走了?
可是,你不走就永远不知道自己的宝藏在哪里
你不走就不会遇到那些有趣的人,
就不会体会天地之心,
就不会知晓追求梦想的感觉。


最后,男孩借风问道:“既然你知道宝藏就在我的家乡,为什么还要骗我去金字塔下?”
炼金术士答道:“这样你才能欣赏到金字塔的风景,它们很漂亮”。
与开篇国王对男孩说的话不谋而合:
幸福的秘密就是去欣赏世界上所有的奇妙风景,但不要忘了汤匙里的油。
这是一本偏鸡汤的书,但是其中的很多道理真的需要自己体会过才能明悟。
我很羡慕那些年少时就遇到这本书的小朋友,
这本书就是每一个人的国王,指引着我们前方的路


读这本书时,我曾不止一次想到电影《死亡诗社》里的一句经典台词:
Medicine,law,business,engineering these are noble pursuits and necessary to sustain life. But poetry,beauty,romance,love… these are what we stay alive for!


亲爱的朋友,
你的宝藏是什么?
你的天命又是什么呢?


笔记摘抄


  1. 绝大多数人似乎都很清楚别人该怎么过活,却对自己的一无所知。

  2. 在生命的重要时刻,我们却对发生在自己身上的事物无能为力,只能听天由命——这是世界上最大的谎言。

  3. 这股力量看似负面,实则引导你去完成你的天命。它能淬炼你的精神、砥砺你的愿力,因为这是这个星球上最伟大的真理:不管你是谁,也不论那是什么,只要你真心渴望一样东西,就放手去做,因为渴望是源自于天地之心;因为那就是你来到这世间的任务。

  4. 如果你一开始就去承诺你根本还未拥有的东西,你就会失去勇往直前的欲望。

  5. 幸福的秘密就是去欣赏世界上所有的奇妙风景,但不要忘了汤匙里的油。

  6. 千万不要把自己尚未到手的财富作为酬庸。

  7. 我就像大多数人一样——只肯相信自己要相信的,不肯去看清事情究竟真正是怎么一回事。

  8. 人们不需要恐惧未知,但看你有无能力去追求自己的需求与渴望。

  9. 当一个人真心渴望某样东西时,整个宇宙都会联合起来帮助你完成梦想。

  10. 魔鬼不是喝进人们嘴里的东西,而是从人们嘴巴里说出来的东西。

  11. 爱并不会阻碍一个人去追寻他的天命,如果他放弃追寻,那是因为它不是真爱……不是述说着宇宙之语的那种爱。

  12. ——那我为什么还要去听我的心在说什么?——因为你永远都无法教他安静下来,即使你假装没听见它在说什么,它还是会永远存在于你的灵魂中,不断地述说你对生活和世界的看法。

  13. 不可靠是由于你的措手不及。若你够了解你的心,就不会发生这种事。只要你了解它的梦想和希望,就会知道该怎么处理它们。你绝不可能逃离开自己的心,所以你最好还是听听它在说什么,这样你就不必害怕会遭遇措手不及的状况。
  14. 人总是害怕去追求自己最重要的梦想,因为他们觉得自己不配拥有,或者是觉得自己没有能力完成。

  15. 每一次的追寻在一开始都会有好运道,而最后能成功微笑的人,一定是通过了最严厉的考验。

读《悟空传》

我没看到金蝉子和孙悟空的胜利,他们最终也没有改变规则。
读书的时候,我非常渴望他们能打破什么,
这种心情就像自己想打破什么一样。
曾经的年少无知却踌躇满志,
曾经的不顾一切又不可一世,
是的,我们每个人都曾想过自己是这个世界的主角,
但总有一天,我们会发现别人并不在意自己如何,
我们总会长大,无奈却又期待着。

书中所有想寻找生命的正解的人,
都不得善终
却也总是有一些人,不知为何在奔波着
像沙僧一样,机械地寻找着琉璃盏的碎片
欺骗着自己,
好像只要能找齐碎片自己就可以重返天庭

我们每一个学生是不是都是曾经的沙僧,
为了去一所大学,每天刻苦地学习着不知道有什么用却貌似很重要的课本知识
小心地拼凑着碎片,只为了一纸入学通知书
终于到了自由的大学,
有一些人仍然过着沙僧那样的日子,继续拼凑
有些人会变成孙悟空和金蝉子
挣扎一下然后继续为了自己的未来恐慌着拼搏着
还有一些人,就是猪八戒和龙女这类为爱而活的人

我很羡慕得到爱情的人
好像看到心爱的人一眼,未来便不再可怕
得失、成败、生死都已不在重要
可以很从容地面对这一切
就像紫霞与悟空一同赴死,
就像白龙已不怕天条而为花果山降雨

未来是恐惧,但也有希望
就像我们不知道玄奘最后取到经没有,不知道他取到的又是什么
但他永远坚持着
他是金蝉子的时候坚持着,是玄奘的时候依旧坚持着
我曾以为金蝉子与如来打赌时,赌的是孙悟空
其实他赌的是自己,一直都是自己
如来辩不赢他,但他却也度不了苍生
也许前世的如来、王母、玉帝、太上都曾是金蝉子一般
追求着正解,苦苦寻求答案
但没有人知道,神也不知道,于是他们选择了放弃
放弃了解救苍生而选择欺骗
当欺骗开始之后就再也无法回头
所有想要揭开骗局的人都是十恶不赦
所有不遵守骗局规则的人也都是十恶不赦

没有人能告诉我们前方等着我们的是什么
人做不到,神也做不到
我们寻找生命的意义,有时会放弃思考这个根本没有答案的问题
我们都是凡人,做不到打破,只有坚守自己的本心
我常怀感动,因为虽然许多人都会随着岁月的流淌而不再追寻
但一直有人正追寻着,一直有人正坚持着
答案重要吗?与这种敢于探索,并一直追寻的精神相比,好像没那么重要了

金蝉子说,什么是如来
如来,就是如实道来
所以他说,我即如来
如来慌了
金蝉子死了,如来却输了
玄奘打破了界限,如来慌了
当玄奘打破界限之时,他取回的是白纸还是所谓的真经已经无所谓了
本没有大乘佛法,所谓大乘不过是金蝉子毕生所书
没有人见过真经,观音也打不开真经
到底这个这个骗局是如来、观音设的,还是金蝉子设的
我不知道
我只知道,玄奘说,无处不是佛
佛在心中又说他做甚?

混乱的时空
五百年前年、年后我早已分不清了
我只知道,取经路上玄奘找到了自己,找到了与金蝉子一样的路
有了路,未来便不再恐惧
你管他能不能成就自己想要的结果呢?
我来过,爱过,得到过
虽然都将失去,但是我的欲望证明我活过!
杨戬看到众神没有心窍,
到底是生着还是死的?

人生就是一场游戏
好好体验
眼前的所拥有的终将会离开你
不必抓,因为抓不住
但不能让自己悔,因为他们不会回!

canvas的简单应用

canvas元素

1、在页面中添加canvas元素:

1
<canvas id="myCanvas" width="200" height="100"></canvas>

2、canvas如何绘制图形:

1
2
3
4
var c=document.getElementById("myCanvas");
var context = c.getContext("2d");
context.fillStyle = "#FF00FF";
context.fillRect(50,25,100,50);

3、浏览器不支持canvas:

1
2
3
<canvas id="myCanvas" width="200" height="100">
您的浏览器不支持canvas,请您升级或更换浏览器。
</canvas>

4、浏览器检测

1
2
3
4
var canvas = document.getElementById("myCanvas");
if(!canvas.getContext("2d")){
alert("您的浏览器不支持canvas!");
}

canvas绘制简单图形

1、直线:

1
2
3
context.moveTo(x,y);
context.lineTo(x,y);
context.stroke();

2、矩形:

1
2
3
//指定填充区域,绘制填充区域的矩形
context.fillStyle = "#FF00FF";
context.fillRect(0,0,200,100);

1
2
3
//指定轮廓线,绘制轮廓线
context.strokeStyle = "#FFFFFF";
context.strokeRect(0,0,100,50);

3、圆形:

1
2
3
4
5
6
//圆区域,填充颜色
context.fillStyle = "#FF00FF";
context.beginPath();
context.arc(100,75,50,0,Math.PI*2,true);
context.closePath();
context.fill();

1
2
3
4
5
//圆线
context.strokeStyle = "#FF00FF";
context.beginPath();
context.arc(100,75,50,0,Math.PI*2,true);
context.stroke();

4、三角形:

1
2
3
4
5
6
7
//三角形区域,填充颜色
context.fillStyle = "red";
context.beginPath();
context.moveTo(25,25);
context.lineTo(150,25);
context.lineTo(25,150);
context.fill();

1
2
3
4
5
6
7
8
//三角形轮廓线
context.strokeStyle = "red";
context.beginPath();
context.moveTo(25,25);
context.lineTo(150,25);
context.lineTo(25,150);
context.closePath();
context.stroke();

5、清空画布:

1
context.clearRect(x,y,width,height);

清除矩形区域内的所有图形,当x=0,y=0时,若width与height的值分别是画布的宽、高时,画布会被清空。
6、绘制贝塞尔曲线
quadraticCurveTo()方法可以绘制二次方贝塞尔曲线

1
2
3
context.quadraticCurveTo(cp1x,cp1y,x,y);
//(cp1x,cp1y)是控制点的坐标
//(x,y)是终点坐标

bezierCurveTo()方法可以绘制三次方贝塞尔曲线

1
2
3
4
context.bezierCureTo(cp1x,cp1y,cp2x,cp2y,x,y);
//(cp1x,cp1y)是第一个控制点的坐标
//(cp2x,cp2y)是第二个控制点的坐标
//(x,y)是终点坐标

canvas的简单应用

canvas元素

1、在页面中添加canvas元素:

1
<canvas id="myCanvas" width="200" height="100"></canvas>

2、canvas如何绘制图形:

1
2
3
4
var c=document.getElementById("myCanvas");
var context = c.getContext("2d");
context.fillStyle = "#FF00FF";
context.fillRect(50,25,100,50);

3、浏览器不支持canvas:

1
2
3
<canvas id="myCanvas" width="200" height="100">
您的浏览器不支持canvas,请您升级或更换浏览器。
</canvas>

4、浏览器检测

1
2
3
4
var canvas = document.getElementById("myCanvas");
if(!canvas.getContext("2d")){
alert("您的浏览器不支持canvas!");
}

canvas绘制简单图形

1、直线:

1
2
3
context.moveTo(x,y);
context.lineTo(x,y);
context.stroke();

2、矩形:

1
2
3
//指定填充区域,绘制填充区域的矩形
context.fillStyle = "#FF00FF";
context.fillRect(0,0,200,100);

1
2
3
//指定轮廓线,绘制轮廓线
context.strokeStyle = "#FFFFFF";
context.strokeRect(0,0,100,50);

3、圆形:

1
2
3
4
5
6
//圆区域,填充颜色
context.fillStyle = "#FF00FF";
context.beginPath();
context.arc(100,75,50,0,Math.PI*2,true);
context.closePath();
context.fill();

1
2
3
4
5
//圆线
context.strokeStyle = "#FF00FF";
context.beginPath();
context.arc(100,75,50,0,Math.PI*2,true);
context.stroke();

4、三角形:

1
2
3
4
5
6
7
//三角形区域,填充颜色
context.fillStyle = "red";
context.beginPath();
context.moveTo(25,25);
context.lineTo(150,25);
context.lineTo(25,150);
context.fill();

1
2
3
4
5
6
7
8
//三角形轮廓线
context.strokeStyle = "red";
context.beginPath();
context.moveTo(25,25);
context.lineTo(150,25);
context.lineTo(25,150);
context.closePath();
context.stroke();

5、清空画布:

1
context.clearRect(x,y,width,height);

清除矩形区域内的所有图形,当x=0,y=0时,若width与height的值分别是画布的宽、高时,画布会被清空。
6、绘制贝塞尔曲线
quadraticCurveTo()方法可以绘制二次方贝塞尔曲线

1
2
3
context.quadraticCurveTo(cp1x,cp1y,x,y);
//(cp1x,cp1y)是控制点的坐标
//(x,y)是终点坐标

bezierCurveTo()方法可以绘制三次方贝塞尔曲线

1
2
3
4
context.bezierCureTo(cp1x,cp1y,cp2x,cp2y,x,y);
//(cp1x,cp1y)是第一个控制点的坐标
//(cp2x,cp2y)是第二个控制点的坐标
//(x,y)是终点坐标

node.js学习笔记(一)

node.js简介

node.js是单线程、异步、事件驱动的。
特点:速度快但是耗内存多。
开始第一段代码:

1
2
3
4
5
6
7
8
9
var http = require("http");
http.createServer(function (request,response){
response.writeHead(200,{'Content-Type':'Text/html',charset=utf-8});
if(request.url!=="/favicon.ico"){ //清除第二次访问
console.log("在服务器端打印的内容");
response.write("服务器返回给前端的内容");
response.end(""); //如果没有这行,http协议结束不了!
}
}).listen(8000);

函数调用

函数调用有两种方式,一种是本地函数调用,另一种是调用其它文件中的函数。

其他文件中的函数调用

1
var otherFileFun = require("./module/other.js");

这行代码是在本地文件中使用的,其目的类似对函数进行声明。这样我们就可以在本地文件中使用其他文件(other.js)中给我们开放接口的函数了。那么在other.js中如何开放接口呢?

1
2
3
4
5
//other.js文件中的内容:
function other(){
console.log("other File");
}
module.exports = other;

这是第一种开放接口的方法,但这样在一个js文件中只能开放一个函数的接口。还有另一种方式开放接口:

1
2
3
4
5
6
7
8
9
10
11
//重新写other.js的内容
module.exports {
func1:function(){
console.log("function 1");
return "function 1";
},
func2:function(){
console.log("function 2");
return "function 2";
}
}

使用这种类似返回一个对象字面量的方式开放接口,就可以在一个js文件中同时开放几个函数的接口了。在本地文件中调用的时候,使用调用对象方法的形式就可以调用了。

1
2
var other1 = otherFileFun.func1();
var other2 = otherFileFun["func2"]();

关于事件冒泡和事件捕获

之前在学jquery时,看到了事件冒泡。好多次面试的时候,面试官也考过事件冒泡。我原来一直以为,事件冒泡就是触发子元素的事件处理程序,子元素的事件处理程序完成后会继续执行其父元素的事件处理程序。完全没想到事件冒泡和事件捕获之间居然有关系!
“DOM2级事件”规定的事件流为3个阶段:事件捕获阶段–>“处于目标”阶段–>事件冒泡阶段,如下图所示:

记住理解了这张图,就可以很容易地理解事件捕获与事件冒泡之间的关系。
那么stopPropagation()方法的功能又是什么呢?实际上,这个方法的功能是取消事件的进一步捕获或冒泡。也就可以理解为,当调用这个方法之后,事件流中的事件捕获与事件冒泡全都被阻止了。
事件流的这种处理机制,让我们有两次可以在目标对象上操作事件的机会!
注:IE8-只有事件冒泡的流程。

参考资料:《javascript高级程序设计》(第三版)

如果小伙伴们想深入理解事件冒泡和事件捕获,可以参考知乎上的这篇文章:
FEX·饭记 - 解密W3C标准冒泡、捕获原理(分享自知乎网)

用javascript写排序算法

今天学习了冒泡排序和快速排序,阅读的是《啊哈!算法》。作者是用C语言描述的算法。看完之后,我用javascript敲了一遍。结果如下:

冒泡排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function sort(myNum){
var temp = 0;
var flag = 0;
for(var i=0;i<myNum.length-1;i++){
var flag = 0;
for(var j=0;j<myNum.length-i;j++){
if(myNum[j]>myNum[j+1]){
flag = 1;
var temp = myNum[j];
myNum[j] = myNum[j+1];
myNum[j+1] = temp;
}
}
if(flag == 0){
break;
}
}
}

冒泡排序的基本思想就是,每次比较两个相邻的元素如果它们的顺序错了,那就把它们交换。我写的这个算法,加了一个标志位,用来在排序结果已经正确的情况下将结果返回,提高算法效率。

快速排序(快排)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function quickSort(array,left,right){
if(left>right){
return; //递归调用的返回条件
}
var temp = array[left];
var i = left;
var j = right;
var t = 0;
while(i!=j){
while(array[j]>=temp&&i<j){ //从右侧向左找比基准数小的数
j--;
}
while(array[i]<=temp&&i<j){ //从左向右找比基准数大的数
i++;
}
if(i<j){
t = array[i];
array[i] = array[j];
array[j] = t;
}
}
array[left] = array[i];
array[i] = temp;
quickSort(array,left,i-1); //递归调用
quickSort(array,i+1,right);
return array;
}

快速排序的基本思想是二分。每次找一个基准数,将数组分成两部分,基准数左边的部分全比基准数小,基准数右边的全比基准数大。然后再在这两部分里分别找基准数,然后再分。

完整的代码我已经放到了我的github上:
https://github.com/TimmyKingFree/algorithm

一个在减肥的蓝胖纸<br><br>阳光正能量小王子<br>…^_^…