- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章基础题目选解
三、对double类型数组排序(特别要注意) double in[100]; int cmp( const void *a , const void *b ){return *(double *)a *(double *)b ? 1 : -1;} qsort(in,100,sizeof(in[0]),cmp); 四、对结构体一级排序 struct In{ double data; int other;}s[100] //按照data的值从小到大将结构体排序,关于结构体内的排序关键数据data的类型可以很多种,参考上面的例子写 int cmp( const void *a ,const void *b){return (*(In *)a)-data (*(In *)b)-data ? 1 : -1;} qsort(s,100,sizeof(s[0]),cmp); 五、对结构体二级排序 struct In{ int x; int y;}s[100]; //按照x从小到大排序,当x相等时按照y从大到小排序 int cmp( const void *a , const void *b ){struct In *c = (In *)a;struct In *d = (In *)b;if(c-x != d-x) return c-x - d-x;else return d-y - c-y;} qsort(s,100,sizeof(s[0]),cmp); 六、对字符串进行排序 struct In{ int data; char str[100];}s[100]; //按照结构体中字符串str的字典顺序排序 int cmp ( const void *a , const void *b ){return strcmp( (*(In *)a)-str , (*(In *)b)-str );} qsort(s,100,sizeof(s[0]),cmp); qsort 头文件为 #include stdlib.h sort 头文件为?#include algorithm sort 调用格式 sort(a,a+n,cmp); sort 更好用 检索 常用的就是遍历和二分检索 二分检索 二分查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。它的基本思想是,将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的x作比较,如果x=a[n/2]则找到x,算法终止。如果xa[n/2],则我们只要在数组a的左半部继续搜索x(这里假设数组元素呈升序排列)。如果xa[n/2],则我们只要在数组a的右半部继续搜索x。 5.4 数学基础 明天有队友讲这一节 5.5 在线评测 BOJ POJ 第五章 基础题目选解 09计算机 黎明明 学习目标: 1、学会用常量表简化代码 2、学会用状态变量辅助字符串读入 3、学会用结构体定义高精度整数,并设计构造函数、复制构造函数和输入输出办法。 4、学会为结构体定义“小于”运算符,并用它定义其他比较运算符 5、掌握冒泡排序和顺序检索 6、熟练掌握用qsort库函数给整数和字符串排序的方法。 7、熟练掌握小规模素数表的构造方法 8、熟练掌握素因子分解的办法。 9、熟练掌握三角形有向面积的意义和计算办法 10、完成一定数目的习题。 学习目标: 在算法比赛中,编程能力非常重要。算法设计得再好,如果不能在很短的时间里面实现出来也是白搭。这一章就是通过一些习题,让大家对一些小的编程技巧有所了解。为后面一些复杂的算法打基础。 5.1 字符串 纯字符串的容易题大多数都是一看就知道怎么做,虽然思路简单但是实现却比较繁琐,如果不用一些小技巧来简化,那么代码量就会很大,而且很容易出小错误。 习题1: 输入一个错位后敲出的字符串,输出打字员本来想打出的句子。 如何做到题目要求的输入一个字符串? 主要输入库函数: 一次输入一个字符: scanf(格式化字符串,地址表); getchar() getch 一次输入一个字符数组: scanf(格式化字符串,地址表); gets() C++ cin 1、更广义的常量 2、转义 3、多种解法,代码长度不一样 4
文档评论(0)