1 / 88

问题六:大学生如何工作?(组织能力、管理能力) (班干部、系院学校团委、社团、志愿者 …… )

思考. 问题六:大学生如何工作?(组织能力、管理能力) (班干部、系院学校团委、社团、志愿者 …… ). 不要崇拜哥,哥是打酱油的. 听说哥在大学 6 个社团当官,我好崇拜哥. 李开复给程序员的七个建议. 1. 练内功: 数据结构、算法、数据库、操作系统原理、计 算 机体系结构、计算机网络、离散数学等基础打实。 2. 多实战: 编程和调试并重。 3. 求实干: 一丝不苟、强烈的好奇心。 4. 重视数学学习 :离散数学、概率论、布尔代数、集合论和 数理逻辑。 5. 培养团队精神: 不能单打独斗、学会协作。

dayton
Download Presentation

问题六:大学生如何工作?(组织能力、管理能力) (班干部、系院学校团委、社团、志愿者 …… )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 思考 • 问题六:大学生如何工作?(组织能力、管理能力) (班干部、系院学校团委、社团、志愿者……) 不要崇拜哥,哥是打酱油的 听说哥在大学6个社团当官,我好崇拜哥

  2. 李开复给程序员的七个建议 1.练内功:数据结构、算法、数据库、操作系统原理、计 算 机体系结构、计算机网络、离散数学等基础打实。 2.多实战:编程和调试并重。 3.求实干:一丝不苟、强烈的好奇心。 4.重视数学学习:离散数学、概率论、布尔代数、集合论和 数理逻辑。 5.培养团队精神:不能单打独斗、学会协作。 6.激励创新意识、培养好奇心、不要死记硬背:重要自己思 想的提高。 7.有策略的“打工”:实习机会也很重要。

  3. 送给学生的话 它们需要哪些能力 贝贝,如果你一生可以做五个工作,你希望做哪五个工作 老师、省长、CEO、医生、记者 爱好、吃苦、认真、特长、乐观、交际

  4. 算法与数据结构 • 6.1 算法的发现 • 6.2 什么是算法 • 6.3 算法的表示 • 6.4 基本的算法 • 6.5 数据结构

  5. 推荐阅读:程序员2006.4《算法的力量》

  6. 【面试真题一】 妈呀你管谁叫姑娘呢!人家是纯爷们儿! 一位商人有8枚银元,其中有1枚略轻的是假银元。姑娘您能用天平(不用砝码)将假银元找出来吗?

  7. 【面试真题二】 还是出道题考考你吧!听好了!东方明珠大概要多少个乒乓球垒积起来? 这叫什么题啊?这叫谁谁也回答不了!我……

  8. 【面试真题三】 把23、3、465、2、57、561、36、35 变成以下形式 的二维数组: 23 3 465 57 2 36 561 35 源代码

  9. 程序=数据结构+算法 描述对数据的操作步骤 描述数据的类型、组织形式 著名计算机科学家沃思( Niklaus Wirth )

  10. 我也不知道,让我们去学习吧…… 程序的灵魂是什么? 您真棒! 三毛,计算机的灵魂是什么? 软件的灵魂是什么 软件 程序 算法 海宝,算法的灵魂是什么?

  11. 6.1 算法的发现 • 算法(Algorithm)由九世纪数学家al-Khwarizmi的名 字翻译而来 • 它初期的概念是指解决问题或执行任务的确定的过程 • 1842年,Ada Byron为他设想的自动计算器写了世界 上第一个算法。但这算法未能被真正实现,因为Aba Byron未能造出他的自动计算器 • 现代意义上的计算机算法的概念是在1936年Alan Turing 提出现代计算机的基本模型图灵机之后才清晰 起来 • 算法是解决问题或执行任务的过程;它能够一步一步 地在图灵机或等价的机器(如现代的计算机)上执行

  12. 算法常常是用伪程序、自然语言、程序语言、硬算法常常是用伪程序、自然语言、程序语言、硬 件描述 • 由此可见,算法的本质是问题解决过程的概念, 而相应的程序只是一种它的表述 小胖,很多网民还不懂程序与算法的关系,你说说 程序就是算法的衣服,是其中衣服的一件

  13. 6.2 什么是算法 1.什么是算法 • 解决某一特定问题的一组有序的、明确的、可执行 的、可终止的步骤集合 例:求 • 方法1:1+2,+3,+4,一直加到100 加99次 • 方法2:100+(1+99)+(2+98)+…+(49 +51)+50 = 100 + 49×100 +50 加51次

  14. 2.算法特性 • 输入:有零个或多个 • 输出:至少一个 • 确定性:组成算法的每条指令清晰、无歧义 • 有限性:每条指令执行次数有限,执行每条指令的 时间有限 • 可行性:算法是能行的 • 程序是算法用程序语言的具体实现,程序可以不满 足有限性

  15. 3.算法的评价 • 正确性 • 健壮性 • 性能性(效率与低存储量) • 可读性 • 扩充性 • 维护性 为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合适的算法。希望方法简单,运算步骤少

  16. 4.算法的复杂性计算 • 时间复杂性:与问题规模、算法输入及算法本身相 关的操作次数的总和,常记为T(n) • 渐进时间复杂性:问题规模逐渐增大后时间复杂度 的极限形式 • 如果存在一个常数C>0,一个算法能够在Cn2的时 间内处理完规模大小为n的输入,则该算法的时间 复杂性记为 O(n2),称作n2级

  17. 5.算法的分类 • 数值运算算法、 非数值运算算法 • 串行算法、并行算法 • 确定性算法、随机算法 • 描述算法的方法:文字、图形(符号)

  18. 6.算法研究的典型问题 • 分类 • 排序 • 搜索(图片、视频) • 遍历 • 集合运算

  19. 7.描述算法设计的一般过程

  20. 算法常用设计方法: • 循环法 • 递归法 • 分治法 • 贪心法 • 动态规划 • 线性规划 • 搜索与枚举 • 启发式搜索

  21. 8.学习算法的方法 • 数学家的方法:Dijkstra算法、A*算法等 • 工程师的方法: http://theory.stanford.edu/~amitp/GameProgramming/ 【典型例题】:货郎担问题 某售货员要到若干个城市销售货物,已知各城市之间的距离,要求售货员选择出发的城市以及旅行路线,使每个城市仅仅过一次,最后回到出发城市,而路程最短

  22. 6.3 算法的表示 1.为什么要设计算法表示 好好学习 好 读 书 不 好 读 书 好 读 书 不 好 读 书

  23. 2.带序号的自然语言描述 • 易懂却不直观,不严格 【例题】计算1到100的和 1. 0=>s单元 2. 1 => n单元 3. s+n =>s 4. n+1 =>n 5.判断n100?是,转3;否则转6 6.输出s的值

  24. 输入/输出 处理 判断 起止 连接点 流程线 开始 0=>s 1=>n s+n =>s n+1=>n T n100? F 输出s 结束 3.流程图-UML • 灵活、自由、形象、直观,可表示任何算法 【例题】计算1到100的和

  25. 0=>s P P A T F 1=>n A A P n100? A B s+n =>s n+1=>n 输出s的值 • 4.N-S图(盒图) • 特点:完全去掉了带箭头的流程线,算法所有处 理步骤都写在一个大矩形框(表示简单、符合结 构化思想) 判断 处理 循环 【例题】计算1到100的和

  26. 0=>s 1=>n if n100 s+n =>s n+1=>n print s • 5.伪代码 • 用介于自然语言与计算机语言之间的文字及符号来 描述算法 • 方便、易懂、便于向计算机语言过渡 【例题】计算1到100的和

  27. Pn A P P1 P2 P2 P1 P1 L1 L2 X=… Ln while c C 或 P2 输入输出 重复 子算法 定义 选择 语句标号 处理 until c d 循环结构 a 顺序结构 b 选择结构 c 多选择结构 6.PAD图

  28. x {输入年份} x是400的倍数 或者 x是4的倍数但不是100的倍数 算法开始 “x是闰年” “x不是闰年” 算法结束 【例题】输入年份,判断该年是否为闰年

  29. 6.4 基本的算法 1.求和 【例题】1到100的奇数之和 #include <stdio.h> int main() { int i,sum=0; for (i=1;i<=100;i++) { sum=sum+i; i=i+2; } printf("sum= %d \n",sum); } 这个程序对吗?

  30. #include <stdio.h> int main() { int a=1,b=99,sum=0; for (;a<=b;) { sum=sum+a+b; a=a+2; b=b-2; } printf("sum= %d \n",sum); } 这个程序对吗?

  31. 【面试题】百元钱买百支笔问题(钢笔3元一支,【面试题】百元钱买百支笔问题(钢笔3元一支, 圆珠笔2元一支,铅笔0.5元一支)。 问:有哪些购买方案? 源代码

  32. 2.乘积 【面试真题】利用递归调用手段编程计算N! #include <stdio.h> int main() { int i,n,sum=1; scanf("%d",&n); for (i=1;i<=n;i++) { sum=sum*i; } printf("sum= %d \n",sum); }

  33. #include <stdio.h> int main() { int n; int find(int i); scanf("%d",&n); printf("%d \n",find(n));} int find(int i) { int n,val=1; for(n=i;n>1;n--) val*=n; return val;}

  34. #include <stdio.h> int main() { int n; int find(int n); scanf("%d",&n); printf("n!=%d \n",find(n));} int find(int n) { if(n==1) return 1; else return find(n-1)*n;}

  35. 3.最大和最小 【面试真题】四个数从小到大输出来 #include <stdio.h> int main() { int t,a,b,c,d; scanf("%d",&a); scanf("%d",&b); scanf("%d",&c); scanf("%d",&d); if(b>a) { t=a; a=b; b=t; } if(c>a) { t=a; a=c; c=t; } if(d>a) { t=a; a=d; d=t; } if(c>b) { t=b; b=c; c=t; } if(d>b) { t=b; b=d; d=t; } if(d>c) { t=c; c=d; d=t; } printf("%d,%d,%d,%d \n",a,b,c,d); }

  36. 4.排序 • 选择排序:先找一个最小的交换,然后在剩下的找最 小的交换 【例题】把下列的数字从小到大排列:23,78,45,8,32,56 第一次: 第二次: 第三次: 第四次: 第五次:

  37. 冒泡排序:依次比较相邻的两个数,将小数放在前冒泡排序:依次比较相邻的两个数,将小数放在前 面,大数放在后面 【例题】把下列的数字从小到大排列:23,78,45,8,32,56 第一次: 第二次: 第三次: 【思考】如果上面的例题每次找最小的排在前面, 则每次怎么排序?

  38. 插入排序:先取第一个,然后取第二个,把前面两个排插入排序:先取第一个,然后取第二个,把前面两个排 序,然后取第三个,把前三个排序,按照如此方法排序, 就像插牌 【例题】把下列的数字从小到大排列:23,78,45,8,32,56 第一次: 第二次: 第三次: 第四次: 第五次: 第六次:

  39. 快速排序: • 堆排序: • 希尔排序: • 桶式排序: • 合并排序: • 基排序:

  40. 5.查找 • 顺序查找:先从第一个数比较,然后第二个,直到相等 【例题】找到62:4,21,36,14,62,91,8,22,7,81,77,10 第一次: 第二次: 第三次: 第四次: 第五次:

  41. 折半查找:数据有顺序。先从数中间比较,然后看折半查找:数据有顺序。先从数中间比较,然后看 是大了还是小了,然后再找从中间到另一半的中间 的数进行比较,一直这样比较,直到找到 【例题】找到22:4,7,8,10,21,22,36,62,77,81,91 第一次: 第二次: 第三次: 第四次:

  42. 6.子算法 • 结构化编程的原则要将算法分成几个单元,称为 子算法,每个子算法又分为更小的子算法,如选择 排序

  43. 7.递归 • 迭代:如果算法的定义没有包含算法本身 • 递归:如果算法的定义包含算法本身

  44. 6.5 数据结构

  45. 为什么学习《数据结构》 • 重要的计算机专业课程 • 重要的求职敲门砖 • 重要的考研专业课程 • 程序设计竞赛核心课程 • 它为操作系统、编译原理、数据库原理、软件工 程、图形学等后续课程的学习打下基础

  46. 为什么学习《数据结构》 • 进程之间就是用链表结构 • 内存分配就是用二叉平衡树 • 键盘的输入、显示器输出就是用队列 • 硬盘、内存、高速缓冲区切换的读入就用到电梯算法 • 编译原理就用到很多图、栈 • 数组到处都用 • 异常结构用到的异常链 • 文件索引用到的B+树 • 高速缓冲区用到hash 表 • 路由器就用到图 • ……

  47. 线性表 书目卡片 书目文件 索引表 按分类号 按书名 按作者名 登录号: 书名: 作者名: 分类号: 出版单位: 出版时间: 价格: 为什么学习《数据结构》 例1 书目自动检索系统

  48. …... …... …... …... 树 …….. …….. 例2 人机对奕问题

  49. 例3文件管理的树型结构 文件目录间的树型关系

  50. AB C AC AD D B BA BC BD DA DB DC E A EA EB EC ED 例4多叉路口交通灯管理问题

More Related