int main(void)
{
  int N;
  int *A;
  int i, j, val;
  
  scanf("%d",&N);
  A = (int *) malloc(sizeof(int)*N);
  
  for(i=0; i<N; i++){
    scanf("%d",&A[i]);
  }
  
    struct timeval start, stop;
    double totaltime;

    gettimeofday(&start,NULL);
    insertionSort(A, N);
    gettimeofday(&stop,NULL);
    
    checkSorted(A,N);
    totaltime = ( stop.tv_sec * 1000000L + stop.tv_usec )
          - ( start.tv_sec * 1000000L + start.tv_usec );
   
    totaltime /= 1000; 
    printf("Size = %d Time taken = %fms\n",N,totaltime);
        
  return 0;
}
示例#2
0
文件: merge.c 项目: EC527Proj/EC527
int main() {
	int i;
	int *in;
	int *out;
	int *tmp;

	SIZE=pow(2,LEVELS);
	srand(SEED);
	printf("Testing array of size %d\n",SIZE);
	in = (int*)malloc(SIZE*sizeof(int));
	out = (int*)malloc(SIZE*sizeof(int));
	for (i=0; i<SIZE; i++) {
		in[i]=random() % MAXVAL;
	}
//	printf("in: ");
//	printInt(in);
	for (i=0; i<SIZE; i++) {
		out[i] = in[i];
	}

	mergeSort(in, out);

//	printf("out: ");
//	printInt(out);
	checkSorted(out);

	free(in);
	free(out);
	return 0;
}
示例#3
0
/* This function can be used only when the adjacency lists for
 * each vertex are sorted! Beware!
 **/
Matrix* add(Matrix* M0, Matrix* M1)
{
	if ( checkSorted(M0->nvtxs, M0->xadj, M0->adjncy) == 0 || 
			checkSorted(M1->nvtxs, M1->xadj, M1->adjncy) == 0)
	{
		printf("Yikes! Input to matrix add is not sorted!\n");
		fflush(stdout);
		return NULL;
	}

	Matrix* ret;
	int i,j,k; 
	long ret_size=(M0->nnz > M1->nnz)? M0->nnz: M1->nnz ;
	int init_ret_size = ret_size;
	wgttype t;

	ret=allocMatrix(M0->nvtxs, init_ret_size ,0,0,0);
	ret->xadj[0]=0;
	for(i=0;i<M0->nvtxs;i++)
	{
		int l=ret->xadj[i];
		for(j=M0->xadj[i],k=M1->xadj[i];
			 j<M0->xadj[i+1] && k<M1->xadj[i+1];)
		{
			wgttype a=M0->adjwgt[j],b=M1->adjwgt[k];

			if ( l+2 >= ret_size )
			{
				ret_size+=ret_size;
				ret->adjncy=(idxtype*)realloc(ret->adjncy,
								(ret_size)*sizeof(idxtype));
				ret->adjwgt=(wgttype*)realloc(ret->adjwgt,
								(ret_size)*sizeof(wgttype));
				if ( ret->adjncy == NULL || ret->adjwgt == NULL )
				{
					printf("Could not allocate");
					printf(" %ld bytes!\n",ret_size*sizeof(idxtype));
					abort();
				}
			}

			if (M0->adjncy[j]==M1->adjncy[k])
			{
				ret->adjwgt[l]=a+b;
				ret->adjncy[l]=M0->adjncy[j];
				j++;k++;l++;
			}
			else 
			{
				if ( M0->adjncy[j] < M1->adjncy[k] )
				{
					ret->adjwgt[l]=a;
					ret->adjncy[l]=M0->adjncy[j];
					j++;l++;
				}
				else
				{
					ret->adjwgt[l]=b;
					ret->adjncy[l]=M1->adjncy[k];
					k++;l++;
				}
			}
		}
		if ( l+(M0->xadj[i+1]-j)+(M1->xadj[i+1]-k) >= ret_size )	
		{
			ret_size+=ret_size;
			ret->adjncy=(idxtype*)realloc(ret->adjncy,
							(ret_size)*sizeof(idxtype));
			ret->adjwgt=(wgttype*)realloc(ret->adjwgt,
							(ret_size)*sizeof(wgttype));
			if ( ret->adjncy == NULL || ret->adjwgt == NULL )
			{
				printf("Could not allocate");
				printf(" %ld bytes!\n",ret_size*sizeof(idxtype));
				abort();
			}
		}

		for(;j<M0->xadj[i+1];j++)
		{
			ret->adjncy[l]=M0->adjncy[j];
			ret->adjwgt[l++]=M0->adjwgt[j];
		}
		for(;k<M1->xadj[i+1];k++)
		{
			ret->adjncy[l]=M1->adjncy[k];
			ret->adjwgt[l++]=M1->adjwgt[k];
		}

		ret->xadj[i+1]=l;
	}

	ret->nnz=ret->xadj[ret->nvtxs];

	return ret;
}