コード例 #1
0
ファイル: util.c プロジェクト: koadman/proxigenomics
void ParallelQSortInts(idxtype *a, idxtype *b, int start, int end)
{
	int q;
	if ( start < end )
	{
		q=ParallelRandomPartitionInts(a,b,start,end);
		ParallelQSortInts(a,b,start,q-1);
		ParallelQSortInts(a,b,q+1,end);
	}
}
コード例 #2
0
ファイル: utils.c プロジェクト: powerswat/ReuterDataAnalytics
void getPermutedGraph(idxtype* perm, idxtype* revPerm, int nvtxs, 
		int nedges, idxtype* xadj, idxtype* adjncy, idxtype* adjwgt, 
		idxtype** p_xadj, idxtype** p_adjncy, idxtype** p_adjwgt)
{
	*p_xadj = idxmalloc(nvtxs+1, "getPermutedGraph:p_xadj");
	*p_adjncy = idxmalloc(nedges, "getPermutedGraph:p_adjncy");
	if ( adjwgt != NULL )
		*p_adjwgt = idxmalloc(nedges, "getPermutedGraph:p_adjwgt");
	else
		*p_adjwgt = NULL;

	int i;
	(*p_xadj)[0]=0;
	for ( i=0; i<nvtxs; i++ )
	{
		int orgI = revPerm[i];
		int j;
		(*p_xadj)[i+1] = (*p_xadj)[i] + ( xadj[orgI+1] -
								xadj[orgI] );
		for ( j=(*p_xadj)[i]; j<(*p_xadj)[i+1]; j++ )
		{
			int orgJ = xadj[orgI] + j - (*p_xadj)[i];
			(*p_adjncy)[j] = perm[adjncy[orgJ]];
			if ( adjwgt != NULL )
				(*p_adjwgt)[j] = adjwgt[orgJ];
		}
		
		if ( adjwgt != NULL )
		{
			ParallelQSortInts( (*p_adjncy), (*p_adjwgt), (*p_xadj)[i],
			(*p_xadj)[i+1]-1 );						
		}
		else
		{
			iidxsort( (*p_xadj)[i+1]-(*p_xadj)[i],
						(*p_adjncy)+(*p_xadj)[i] );	
		}
	}

	return;
}