摘要: 方法一:初始化最大值为a[0],次大值为a[1],遍历一次,每次比较并更新最大值和次大值,最后就可以得到次大值。代码如下:#include<stdio.h>#include<stdlib.h>int findSecond(int *a,int size){ int i,max,s_max; max=a[0]; //最大值 s_max=a[1]; //次大值 for(i=0;i<size;i++) { if(a[i]>max) { s_max=max; //更新最大值和次大值 max=... 阅读全文
posted @ 2013-04-23 21:47 一枚程序员 阅读(1813) 评论(0) 推荐(0) 编辑
摘要: 第一种方法(可能越界):a=a+b;b=a-b;a=a-b;第二种写法(只适用于整数):解决方法:(a、b异或的结果 ,和a异或得b ,和b异或得a)a=a^b;b=a^b;a=a^b;写成宏替换法:#define swap(a,b) (a)^=(b)^=(a)^=(b) 阅读全文
posted @ 2013-04-23 21:16 一枚程序员 阅读(231) 评论(0) 推荐(1) 编辑
摘要: 题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可(内存限制为 2G的意思就是,可以使用2G的空间来运行程序,而不考虑这台机器上的其他软件的占用内存)。 关于中位数:数据排序后,位置在最中间的数值。即将数据分成两部分,一部分大于该数值,一部分小于该数值。中位数的位置:当样本数为奇数时,中位数=(N+1)/2 ; 当样本数为偶数时,中位数为N/2与1+N/2的均值(那么10G个数的中位数,就第5G大的数与第5G+1大的数的均值了)。分析:明显是一道工程性很强的题目,和一般的查找中位数的题目有几点不同。 1. 原数据不能读进内存,不然可以用快... 阅读全文
posted @ 2013-04-23 16:37 一枚程序员 阅读(3304) 评论(0) 推荐(0) 编辑
摘要: atoi()函数原型:int atoi(const char *nptr) 用法:#include <stdlib.h> 功能:将字符串转换成整型数;atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负号才开始做转换,而再遇到非数字或字符串时('\0')才结束转化,并将结果返回。 说明:atoi()函数返回转换后的整型数。用法如下:#include<stdio.h> #include<stdlib.h> int main() { char a[] = "-100"; char b[] = " 阅读全文
posted @ 2013-04-23 16:22 一枚程序员 阅读(1639) 评论(0) 推荐(1) 编辑