任给来自于[0,nd)范围内的n个整数,其中常数d>1。试设计并实现一个算法,在O(n)时间内完成对它们的排序。
指出下列各算法的功能并求出其时间复杂度。
(5)void Use File(if streams inp, intc[] ) (
//假定in p所对应的文件中保存有n个整数
for(inti-0; 1=10; 1++) c[i] =0;
int x;
while(inp>>x) (i=x*10; c[i] ++; )
(6)
(7)
(8)
阅读下列函数说明和C代码,将应填入 处的字句写在答题纸的对应栏内。
[函数1.1说明]
函数int factors(int n)的功能是判断整数n(n>=2)是否为完全数。如果n是完全数,则函数返回0,否则返回-1。
所谓“完全数”是指整数n的所有因子(不包括n)之和等于n自身。例如28的因子为1、2、4、7、14,而28=1+2+4+7+14,因此28是“完全数”。
[函数1.1]
int factors(int n)
{
int i,s;
for(i=1,s=0;i<=n/2;i++)
if(n%i==0) (1) ;
if((2) )return 0;
return -1;
}
[函数1.2说明]
函数int maxint(int a[], int k)的功能是用递归方法求指定数组中前k个元素的最大值,并作为函数值返回。
[函数1.2]
int maxint(int a[],int k)
{
int t;
if((3) ) return (4) ;
t=maxint(a+1, (5) );
return (a[0]>t)?a[0]:t;
面试题:从1到n整数中1出现的次数
题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,1一共出现了5次。