您的位置:首页 > 其它

竞赛中的一些常用函数

2013-01-12 20:01 288 查看
主要说一些课堂上没有讲但ACM竞赛中常用的一些函数

1、memset():在<string.h>中,函数声明为

void  *memset(
void *dest,      //数组头指针
int c,               //将数组变为的字符
size_t  count    //数组长度
);//函数返回修改数组的指针


比如:

#include<stdio.h>
#include <string.h>
int mian()
{
char data[]="This is a test of the memset function";
printf("Before:%s\n",data);
memset(data,'*',4);
printf("After:%s\n",data);
}

/*
output
Before: This is a test of the memset function
After:  **** is a test of the memset function

*/


2、sort():在C++中由<algorithm>声明,时间复杂度是n*log(n),默认升序。比如sort(a,a+10)表示将以数组a的前10个元素升序排列。这是简单的表示 。 完整表示为sort(a,a+10,less<int>());于此对应的降序表示为sort(a,a+10,greater<int>())。 sort()只能对简单元素的数组进行排序,若要对结构体按照某一种元素进行排序,则要用到qsort(数组名,元素个数,元素大小(sizeof),比较函数名),头文件为<iostream>.比较函数写法如下:

int compare(const void *a,const void *b)
{
return *(int *)b-*(int *)a;
}//降序,可按结构体某一元素降序排列

int compare (const void *a,const void *b)
{
return *(int *)a-*(int *)b;
} //shengxu


3、时间函数clock(),在头文件<time.h>中声明,该函数在程序运行完成后对程序的时间复杂度进行度量,因硬件的不同而不同,即使在同一台机器上也会有所差异。函数头为clock_t clock(void)返回硬件滴答数,一般为毫秒(long 类型),除以CLK_TCK CLOCKS_PER_SEC换算成秒(即1000)

#include <stdio.h>
#include <time.h>
int main()
{
long start,end;
start=clock();
for(int i=0;i<10;i++)
for(int j=0;j<1000;j++)
printf("%d         %d\n",i,j);
end=clock();
printf("end-start=%ld\n",end-start);
printf("end-start=%ld\n",(end-start)/1000);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: