- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++常用算法.ppt
程序常用算法 最大公约数 查找 排序 方程求解 线性方程组求解 最大公约数 设整数A、B的最大公约数为R,则A、B可表示为A=aR、B=bR,a、b互质。再设AB。令 C = A % B 即 A = qB + C 因A、B均含有R,故C也含有R,设为C=cR。 由A、B、C的关系,有abc。 令:A = B、B = C、C = A%B。如此一直循环到C == 0。这时A为B的倍数,而a与b互质,因而,b == 1,即,B == R。 函数为: int gcb(int a, int b){ int r = a % b; while(r){ a = b; b= r; r = a % b; } return b;} 递归函数为: int gcb(int a, int b){ if(a % b == 0) return b; return gcb(b, a%b); } 查找 查找的对象可以是数值数组,也可以是字符数组。 对数值数组的查找是指:检查数组中是否有指定值的元素;对字符数组的查找是指:检查数组中是否含有给定的字符串。 对数值数组的查找分为顺序查找和有序查找。对字符数组的查找又称为模式匹配算法。 一、顺序查找 方法思路:从数组的第一个元素到最后一个元素,逐个与给定值比较,若相等,就返回元素的下标值加1;当所有元素都不等于给定值,则返回0。 函数为: int findsx(int a[], int n, int x){ int m; for(m=0; mn; m++) if(a[m] == x) return m+1; return 0; } 二、有序查找(折半查找法) 设数组为升序排列,数组元素个数为n。 方法思路:设变量left和right表示当前查找的数组段的左下标值和右下标值,mid表示当前查找的数组段的中间元素的下标值: mid = (right + left) / 2 第一次查找时,left = 0,right = n - 1。 1. 若leftright,数组中没有给定值x,返回0;否则,计算mid,计算a[mid] - x,结果有: 2. 0,函数结束,返回mid + 1。 3. 0,说明x应在数组段[mid + 1, right]中,令left = mid + 1,转1. 4. 0,说明x应在数组段[left, mid - 1]中,令right = mid - 1,转1. 函数为: int findzb(int a[], int n, int x){ int mid, left = 0, right = n-1; while(left = right){ mid = (left + right)/2; if(a[mid] == x) return mid + 1; if(a[mid] x) left = mid + 1; else right = mid – 1;} return 0; } //SFA1.CPP 三、字符数组的模式匹配法 方法思路:设待查找字符数组为s1,模式字符数组为s2,若strlen(s1)strlen(s2),返回NULL。否则:将字符指针p指向s1。 1. 比较从p处开始的长为strlen(s2)的子串是否与s2相符,若相符,返回p;否则: 2. p++,若stelen(p) = strlen(s2),转1. 否则,可确认s2不是s1的子串,返回NULL。 函数为: char *findstr(char *s1, char *s2){ int a = strlen(s1), b = strlen(s2); char *p = s1; if(a b) return NULL; while(strlen(p) = b){ for(a = 0; a b; a++) if(p[a] != s2[a]) break; if(a == b) return p; //找到了 p++;} return NULL;} //SFA2.CPP Findstr函数的应用:将字符串s1中的子串s2删除。 方法思路:用findstr寻找子串的位置,然后将子串后的字符往前移,覆盖掉子串。直到把所有子串都删除。函数: void delstr(char *s1, ch
您可能关注的文档
- (复杂)市场调研与需求测量.ppt
- (学生)问卷(二)媒体教学情况调查结果.doc
- (幼儿拼音)汉语拼音表与汉语拼音字母表读法.doc
- (提分专家)分裂与变异综合题.doc
- (教科版)五年级科学下册期末综合一.doc
- (数控铣幻灯片).ppt
- (旬中)校本研修现场会材料(修改确定).doc
- (最小公倍数)第十册.ppt
- (最新)第三阶段V型滤池软基处理(旋喷桩).doc
- (机械)(焊接)焊接冶金学(基本原理)习题.doc
- 2025浙江温州市公用事业发展集团有限公司面向高校招聘工作人考前自测高频考点模拟试题最新.docx
- 2025年蓬安县财政局下属单位招聘备考题库附答案.docx
- 广安市农业农村局2025年公开遴选市动物卫生监督所工作人员备考题库附答案.docx
- 南昌市劳动保障事务代理中心招聘3名劳务派遣驾驶员参考题库附答案.docx
- 2025浙江绍兴市新昌县机关事业单位招用编外聘用人员36人备考题库最新.docx
- 浙江国企招聘-2025嘉兴海盐县城市投资集团有限公司招聘7人笔试备考试题附答案.docx
- 长沙银行2026校园招聘备考题库最新.docx
- 2026年度中国地震局事业单位公开招聘备考题库附答案.docx
- 2025福建省晋江圳源环境科技有限责任公司招聘6人模拟试卷附答案.docx
- 浙江国企招聘-2025温州平阳县城发集团下属房开公司招聘5人公笔试备考试题附答案.docx
原创力文档


文档评论(0)