- 5
- 0
- 约4.6千字
- 约 18页
- 2018-04-23 发布于河南
- 举报
12-java算法设计
java算法设计 本章主要内容: 1、静态类方法 2、代数运算 3、密码术 4、排序与查找 5、递归 6、动态数据结构 1、静态类方法 有些方法的价值在于提供方便、高效的工具,并不需要实例化。 例:java.lang.Math类 public final class Math { private Math() {} public static double random() {...} static使我们可以不需要创建该类的对象就使用该方法。 1、范例:华氏与摄氏温度转换 2、代数运算 在博弈游戏中,常可以找到必胜局的数学模式,根据其可以设计必胜算法。 小棍游戏OneRowNim 共21根小棍,让对手面对1、5、9、13、17、21根小棍时,你总是能赢。 sticksLeft%4==1是必胜局 当sticksLeft%4 != 1,(sticksLeft-1)%4是最佳取走小棍数,可以造成必胜局 当sticksLeft%4 == 1,是对手的必胜局,只有随机走。 2、范例:小棍游戏的必胜算法 public int ComputerMove() { int sticksLeft = nim.getSticks(); if (sticksLeft%4 != 1) return (sticksLeft-1)%4; else { int maxPickup=Math.min(3,sticksLeft); return 1+(int)(Math.random()*maxPickup); } } 3、密码术 使用复杂的数学方法对消息加密和解密。 凯撒密码:每个字母由其后的第三个字母替换。 明文:abcdefghijklmnopqrstuvwxyz 密文:defghijklmnopqrstuvwxyzabc 通用的替换密码:使用一个关键字建立替换字母表。 例:关键字xylophone 明文:abcdefghijklmnopqrstuvwxyz 密文:xylophneabcdefgijkmqrstuvwz 3、范例:凯撒密码 public String encode(String word) { StringBuffer result = new StringBuffer(); for (int k=0;kword.length();k++) { char ch = word.charAt(k); ch = (char)(‘a’+(ch-’a’+3)%26); result.append(ch); } return result.toString(); } public String decode(String word) {... ch=(char)(‘a’+(ch-’a’+23)%26);...} 4、排序和查找 在众多数据中设计高效的查询算法,常需要借鉴经典的排序和查找策略. 选择排序: 每一次遍历从待排序列中选取一个关键码最小的记录,第二趟从剩下的n-1个记录中选取关键码最小的记录,直到整个序列的记录选完。这样便得到按关键码有序的序列。 折半查找: 在有序表中,取中间元素作为比较对象,若给定值与中间元素的关键码相等,则查找成功;若给定值小于中间元素的关键码,则在中间元素的左半区继续查找;若给定值大于中间元素的关键码,则在中间元素的右半区继续查找。不断重复上述查找过程,直到查找成功,或所查找的区域无数据元素,查找失败。 4、范例:选择排序 public void selectionSort(int arr[]) { int smallestCard; for (int k=0;karr.length-1;k++) { smallestCard = k; for (int i=k+1;iarr.length;i++) if (arr[i]arr[smallestCard]) smallestCard = i; if (smallestCard != k) swap(arr,k,smallestCard); }//for outerloop }//selectionSort private void swap(int arr[],int el1,int el2) { int temp=arr[el1]; arr[el1]=arr[el2];arr[el2]=temp;} 4、范例:折半查找 public int binarySearch(int arr[],int key) { int low=0; int high=arr.length-1; while(low=high) { int m
您可能关注的文档
- 第七章稳恒磁场3.ppt
- 第七章开金矿博弈与逆推归纳法.ppt
- 学计算机必读.doc
- 16.2.1.1分式乘除.doc
- 2009年全国小学生英语竞赛.doc
- 台塑的异常管理方法.doc
- 1.3信息技术及发展.ppt
- BIGIPV9HA配置文档.doc
- (英语口语)Lesson 18 Text A Christmas Cards.doc
- 高校奖学金评定模型.doc
- (2026春新版)部编版八年级语文下册《第一单元》PPT课件.pptx
- 2018电力监控系统网络安全监测装置技术规范.docx
- 2022电力监控系统安全防护方案审核要点.docx
- 2014电力电缆光伏系统EN 50618欧标.docx
- (2026春新版)人教版二年级数学下册《第三单元 万以内数的认识》教案.docx
- (2026春新版)人教版二年级数学下册《第四单元 万以内的加法和减法》教案.docx
- (2026春新版)人教版二年级数学下册《综合与实践 时间在哪里》教案.docx
- (2026春新版)苏教版二年级数学下册《综合与实践 时间有多长》教案 .pdf
- (2026春新版)部编版三年级语文下册第3单元(教案).docx
- (2026春新版)部编版三年级语文下册第8单元(教案).docx
原创力文档

文档评论(0)