这周编程作业是实现检测点共线的算法。和排序算法有关系的地方在于,对斜率排序后可以很快的检测出来哪些点是共线的,另外这个算法的瓶颈也在于排序的性能。

一点收获:

java传参数时传递的是值,这很多人都知道,只不过特别要注意的是对于引用类型,传递的是“引用的值”,也就是说传递的是指针的副本,因此虽然似乎把一个数组传递进去了,但只要其他地方改动了这个数组,函数内部也会被影响。同理,返回值也是指针,如果不拷贝一份再返回,很有可能你在修改返回值的时候改动到了类的内部变量。

自己还不太明白的地方:

循环内部除了排序还有很多很多操作,这些相对于排序的时间复杂度不重要是因为当N很大很大时,排序需要的时间O(NlogN)要远远大于你内部循环一遍O(N)和其他操作(常数级复杂度),所以说看时间复杂度还是要看循环内的操作。

总结一下:

编程时还是应该自己动手解决问题,太依赖论坛里的解答或者轻易问同学就等于自己放弃了学习的机会。刘未鹏老师在“为什么遇到问题要自己动手解决”里面已经讲的很清晰了,有时你心里清楚这个问题请做完作业的同学给你简单说两句,就马上可以解决(真的很诱惑呀,谁不想最快的速度写完作业呢?)可是如果你问了,下次遇到类似的问题你还是不会,因为你没有经历那个一点点琢磨明白这个知识点的过程,你就做到不到对这个知识点了然于心,下次用起来就不顺手。心理学上有一个“记忆的存储提取速度成反比”的现象,一个东西你理解它的时候越费劲,到用的时候越容易想起来。

另外,面对困难,坚持想办法,不断搜索,尝试,琢磨...这整个过程是很磨练人的耐性的。尤其是物理专业转计算机的学生,很多比较“怵”需要动手的东西,写程序这个过程就是一个训练自己心态的过程,只有不断积累写程序调程序的经验,才能让自己在面对困难的时候,坚持的时间更长一些。

最新文章

  1. IE6/7下空div占用空间的问题
  2. xmpp
  3. JavaScript高阶函数
  4. ASP.NET MVC学习之路由篇(3)
  5. javascript 打开新窗口(window.open)
  6. hadoop下载
  7. [置顶] 使用sping AOP 操作日志管理
  8. 清除 x-code 缓存
  9. 51Nod1778 小Q的集合 【组合数】【Lucas定理】
  10. day40 mycql 视图,触发器,存储过程,函数
  11. js 函数中的this
  12. Java比较两个时间的前后
  13. Qt控件使用汇总
  14. JS --- trim() 函数
  15. Quick solution to java.lang.NoClassDefFoundError: org/openqa/selenium/HasInputDevices error
  16. Java Spring-AOP中的动态代理
  17. HtmlEntities
  18. Spring boot 解决 hibernate no session异常
  19. 编程技巧:使用异或操作符(XOR)交换两数值
  20. mongodb一些语法

热门文章

  1. TechEmpower 13轮测试中的ASP.NET Core性能测试
  2. IE10、IE11 User-Agent 导致的 ASP.Net 网站无法写入Cookie 问题
  3. Ubuntu 16.10 安装KolourPaint 4画图工具
  4. NLP点滴——文本相似度
  5. web api接口同步和异步的问题
  6. 【Java每日一题】20170104
  7. JavaScript基础
  8. Mysql - 增删改
  9. 利用HAProxy代理SQL Server的AlwaysOn辅助副本
  10. 说说DOM的那些事儿