主要说一些课堂上没有讲但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 }