算法——贪心法——活动安排问题

#include
#include

typedef struct acti{
	int order;     //定义结构体,后续排序后便于记录序号 
	int begin;
	int end;
}acti;

//比较函数 
int Compare(const void* x, const void* y) {   
	return (((acti*)x)->end - ((acti*)y)->end);
}    

int ActiveManage(acti A[], int B[], int n, int p[]){
	int i,j;
	int rear;
	j=0;
	B[0]=p[0];
	rear=0;
	for(i=1;i=A[j].end){
			rear++; B[rear]=p[i];   //将活动 p[i]插入队列B[];
			j=i;
			}
	}
	return rear;
} 


int main(){
	int n;
	printf("请输入活动数目 : "); 
	scanf("%d",&n);
	acti A[n];    //结构体数组,存储活动 
	int B[n];     //队列存储活动安排信息,下标从0开始; 
	int p[n];
	int i,j;
	for(i=0;i

算法分析

将各个活动按结束时间从小到大排序,其时间代价为O(nlogn);依次考察每一个活动,其时间代价为O(n),因此,算法的时间复杂度为O(nlogn)。

你可能感兴趣的:(算法,c语言,c++)