竞赛中的一些常用函数

主要说一些课堂上没有讲但ACM竞赛中常用的一些函数

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

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

比如:

 1 #include<stdio.h>
 2 #include <string.h>
 3 int mian()
 4 {
 5 char data[]="This is a test of the memset function";
 6 printf("Before:%s\n",data);
 7 memset(data,'*',4);
 8 printf("After:%s\n",data);
 9 }
10 
11 /*
12 output
13 Before: This is a test of the memset function
14 After:  **** is a test of the memset function
15 
16 */

 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)

 1 #include <stdio.h>
 2 #include <time.h>
 3 int main()
 4 {
 5     long start,end;
 6     start=clock();
 7     for(int i=0;i<10;i++)
 8       for(int j=0;j<1000;j++)
 9         printf("%d         %d\n",i,j);
10     end=clock();
11     printf("end-start=%ld\n",end-start);
12     printf("end-start=%ld\n",(end-start)/1000);
13     return 0;
14 }

 

 

 

 

 

 

 

 

 

posted on 2013-01-12 20:01  行者1992  阅读(409)  评论(0编辑  收藏  举报