time函数跟difftime函数,time函数的参数返回和返回值有区别
time函数和difftime函数,time函数的参数返回和返回值有区别?
《数据结构与算法分析,c语言原书第二版》中 第二章 的2.7.1题:
需要生成前N个自然数的随机置换。例如:【4,3,1,5,2】和【3,1,4,2,5】就是合法的置换。但是【5,4,1,2,1】却不是。因为数1出现两次而数3却没有。下面是一种算法:
如下填入A[0]到A[N-1]的数组A;为了填入A[i],生成随机数直到它不同于生成的A[0],A[1],...A[i-1]时,再将其填入A[i]。
对于这个算法,我自己写的代码(linux-centos下):
《数据结构与算法分析,c语言原书第二版》中 第二章 的2.7.1题:
需要生成前N个自然数的随机置换。例如:【4,3,1,5,2】和【3,1,4,2,5】就是合法的置换。但是【5,4,1,2,1】却不是。因为数1出现两次而数3却没有。下面是一种算法:
如下填入A[0]到A[N-1]的数组A;为了填入A[i],生成随机数直到它不同于生成的A[0],A[1],...A[i-1]时,再将其填入A[i]。
对于这个算法,我自己写的代码(linux-centos下):
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/time.h>
#include <unistd.h>
#include "log.h"
#define N 10000
int main(int argc, char **argv)
{
logInit(argv[0], __FILE__, __LINE__);
int a[N] = {0};
time_t ts, te, ts1, ts2;
time(&ts);
// ts1 = time(NULL);...........a
first(N, a);
// sleep(3);..................b
time(&te);
// ts2 = time(NULL);.................c
int i = 0;
char tmp[N*3] = {0};
for (i = 0; i < N; ++i) {
sprintf(tmp, "%s %d", tmp, a[i]);
}
logPrint("%s", tmp);
logPrint("first所用时间:%f秒", difftime(te, ts));
// logPrint("first所用时间:%f秒", difftime(ts2, ts1));
return 0;
}
int first(int n, int *a)
{
if (n < 0) {
return -1;
}
int i = 0, j = 0, iFlag = 0;
a[0] = RandInt(0, n-1);
for (i = 1; i < n; ++i) {