您的位置:首页 > 其它

一些常用的小算法和知识点 [以前的积累]

2006-05-22 21:53 351 查看
0.随机数的产生
#include<stdlib.h>
#include<time.h>
time_t t;
srand((unsigned)time(&t));
int num=rand()%10;
1.求最大公约数
int gcd(int a,int b)
{
if(a%b==0)
return b;
else
return gcd( b,a%b);
}

int gcd2(int m,int n)
{
while(1)
{
m=m%n;
if(m==0)
return n;
n=n%m;
if(n==0)
return m;
}
}

int max_comdivisor(int i,int j) //非递归减法实现
{
while(i!=j)
{
if(i>j) i-=j;
if(i<j) j-=i;
}
return i;
}

2.动态创建2维数组a[m]

int **a; //a[m]

a=new int *[m];
for(int i=0;i<m;i++)
a[i]=new int
;
for(int k=0;k<m;k++)
delete []a[k];
delete []a;

3.bubble sort
void bsort1(int *a,int n)
{
int i,j;
for( i=n;i>1;i--)
for(j=0;j<i-1;j++)
if(a[j]>a[j+1])
swap(a[j],a[j+1]);
}
void bsort2(int *a,int n)
{

int i,j;
for(i=1;i<n;i++)
for(j=0;j<n-i;j++)
if(a[j]>a[j+1])
swap(a[j],a[j+1]);
}

4.qsort 写法
int cmp(const void *e1, const void *e2)
{
int *a,*b;
a=(int *)e1;
b=(int *)e2;
if (*a==*b) return 0;
if (*a>*b) return 1;
else return -1;
}
qsort(a,N,sizeof(int),cmp);
/*void qsort( void *base, size_t num, size_t width,
int (__cdecl *compare )(const void *elem1, const void *elem2 ) ); */
5.测试程序耗时
clock_t start = clock();
……
clock_t finsh = clock();
cout << "cost time:" << double(finsh - start) /CLOCKS_PER_SEC << endl;
6.[new的写法]
char total[512];
char* pd1 = new (total) char[2]; //在total地址处开始申请空间
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: