亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? quick_sort.c

?? 并行程序設計示例之一
?? C
字號:
#include <stdio.h>#include <stdlib.h>#include <mpi.h>#define  TRUE 1 /*	* 函數名: main	* 功能:實現快速排序的主程序	* 輸入:argc為命令行參數個數;	*       argv為每個命令行參數組成的字符串數組。	* 輸出:返回0代表程序正常結束*/main(int argc,char *argv[]){	int DataSize;	int *data;	/*MyID表示進程標志符;SumID表示組內進程數*/	int	MyID, SumID;	int i, j;	int m, r;	MPI_Status status;	/*啟動MPI計算*/	MPI_Init(&argc,&argv);	/*MPI_COMM_WORLD是通信子*/	/*確定自己的進程標志符MyID*/	MPI_Comm_rank(MPI_COMM_WORLD,&MyID);		/*組內進程數是SumID*/	MPI_Comm_size(MPI_COMM_WORLD,&SumID);			/*根處理機(MyID=0)獲取必要信息,并分配各處理機進行工作*/	if(MyID==0)	{		/*獲取待排序數組的長度*/		DataSize=GetDataSize();		data=(int *)malloc(DataSize*sizeof(int));		/*內存分配錯誤*/		if(data==0) 			ErrMsg("Malloc memory error!");		/*動態生成待排序序列*/		srand(396);		for(i=0;i<DataSize;i++)		{			data[i]=(int)rand();			printf("%10d",data[i]);		}		printf("\n");	}	m=log2(SumID);	/* 從根處理器將數據序列廣播到其他處理器*/	/*{"1"表示傳送的輸入緩沖中的元素的個數,	   */	/* "MPI_INT"表示輸入元素的類型,			   */ 	/* "0"表示root processor的ID  }			   */	MPI_Bcast(&DataSize,1,MPI_INT,0,MPI_COMM_WORLD);		/*ID號為0的處理器調度執行排序*/	para_QuickSort(data,0,DataSize-1,m,0,MyID);    	/*ID號為0的處理器打印排序完的有序序列*/	if(MyID==0)	{		for(i=0;i<DataSize;i++)		{			printf("%10d",data[i]);		}		printf("\n");	}	MPI_Finalize();		//結束計算}/*	* 函數名: para_QuickSort	* 功能:并行快速排序,對起止位置為start和end的序列,使用2的m次冪個處理器進行排序	* 輸入:無序數組data[1,n],使用的處理器個數2^m	* 輸出:有序數組data[1,n]*/para_QuickSort(int *data,int start,int end,int m,int id,int MyID){	int i, j;	int r;	int MyLength;	int *tmp;	MPI_Status status;	MyLength=-1;	/*如果可供選擇的處理器只有一個,那么由處理器id調用串行排序,對應于算法13.4步驟(1.1)*/	/*(1.1)	Pid call quicksort(data,i,j) */	if(m==0)	{		if(MyID==id)			QuickSort(data,start,end);		return;	}		/*由第id號處理器劃分數據,并將后一部分數據發送到處理器id+exp2(m-1),對應于算法13.4步驟(1.2,1.3)*/	/*(1.2) Pid: r=patrition(data,i,j)*/		if(MyID==id)	{		/*將當前的無序區R[1,n]劃分成左右兩個無序的子區R[1,i-1]和R[i,n](1≤i≤n)*/		r=Partition(data,start,end);			MyLength=end-r;			/*(1.3)	Pid send data[r+1,m-1] to P(id+2m-1) */		/* {MyLength表示發送緩沖區地址;*/		/*  發送元素數目為1;		   */		/*  MyID是消息標簽 }		   */		MPI_Send(&MyLength,1,MPI_INT,id+exp2(m-1),MyID,MPI_COMM_WORLD);		/*若緩沖區不空,則第id+2m-1號處理器取數據的首址是data[r+1]*/		if(MyLength!=0)			MPI_Send(data+r+1,MyLength,MPI_INT,id+exp2(m-1),MyID,MPI_COMM_WORLD);	}	/*處理器id+exp2(m-1)接受處理器id發送的消息*/	if(MyID==id+exp2(m-1))	{		MPI_Recv(&MyLength,1,MPI_INT,id,id,MPI_COMM_WORLD,&status);		if(MyLength!=0)		{			tmp=(int *)malloc(MyLength*sizeof(int));			if(tmp==0) ErrMsg("Malloc memory error!");			MPI_Recv(tmp,MyLength,MPI_INT,id,id,MPI_COMM_WORLD,&status);		}	}	/*遞歸調用并行排序,對應于算法13.4步驟(1.4,1.5)*/	/*用2^m-1個處理器對start--(r-1)的數據進行遞歸排序*/	j=r-1-start;		MPI_Bcast(&j,1,MPI_INT,id,MPI_COMM_WORLD);	/*(1.4)	para_quicksort(data,i,r-1,m-1,id)*/	if(j>0)		para_QuickSort(data,start,r-1,m-1,id,MyID);	/*用2^m-1個處理器對(r+1)--end的數據進行遞歸排序*/	j=MyLength;		MPI_Bcast(&j,1,MPI_INT,id,MPI_COMM_WORLD);	/*(1.5)	para_quicksort(data,r+1,j,m-1,id+2m-1)*/	if(j>0)		para_QuickSort(tmp,0,MyLength-1,m-1,id+exp2(m-1),MyID);	/*將排序好的數據由處理器id+exp2(m-1)發回id號處理器,對應于算法13.4步驟(1.6)*/	/*(1.6)	P(id+2m-1) send data[r+1,m-1] back to Pid */	if((MyID==id+exp2(m-1)) && (MyLength!=0))		MPI_Send(tmp,MyLength,MPI_INT,id,id+exp2(m-1),MPI_COMM_WORLD);	if((MyID==id) && (MyLength!=0))		MPI_Recv(data+r+1,MyLength,MPI_INT,id+exp2(m-1),id+exp2(m-1),MPI_COMM_WORLD,&status);}/*	* 函數名: QuickSort	* 功能:對起止位置為start和end的數組序列,進行串行快速排序。	* 輸入:無序數組data[1,n]	* 返回:有序數組data[1,n]*/QuickSort(int *data,int start,int end){	int r;	int i;	if(start<end)	{		r=Partition(data,start,end);		QuickSort(data,start,r-1);		QuickSort(data,r+1,end);	}}/*	* 函數名: Partition	* 功能:對起止位置為start和end的數組序列,將其分成兩個非空子序列,	*		其中前一個子序列中的任意元素小于后個子序列的元素。	* 輸入:無序數組data[1,n]	* 返回: 兩個非空子序列的分界下標*/int Partition(int *data,int start,int end){	int pivo;	int i, j;	int tmp;	pivo=data[end];				i=start-1;				/*i(活動指針)*/	for(j=start;j<end;j++)		if(data[j]<=pivo)		{			i++;			/*i表示比pivo小的元素的個數*/			tmp=data[i];			data[i]=data[j];			data[j]=tmp;		}		tmp=data[i+1];	data[i+1]=data[end];	data[end]=tmp;			/*以pivo為分界,data[i+1]=pivo*/	return i+1;}/*	* 函數名: exp2	* 功能:求2的num次冪	* 輸入:int型數據num	* 返回: 2的num次冪*/int exp2(int num){	int i;	i=1;	while(num>0)	{		num--;		i=i*2;	}		return i;}/*	* 函數名: log2	* 功能:求以2為底的num的對數	* 輸入:int型數據num	* 返回: 以2為底的num的對數*/int log2(int num){	int i, j;	i=1;		j=2;	while(j<num)	{		j=j*2;		i++;	}	if(j>num)		i--;	return i;}/*	* 函數名: GetDataSize	* 功能:讀入待排序序列長度*/int GetDataSize(){	int i;	while(TRUE)	{		printf("Input the Data Size :");		scanf("%d",&i);		/*讀出正確的i,返回;否則,繼續要求輸入*/		if((i>0) && (i<=65535))					break;		ErrMsg("Wrong Data Size, must between [1..65535]");	}	return i;}/*輸出錯誤信息*/ErrMsg(char *msg){	printf("Error: %s \n",msg);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本免费在线视频不卡一不卡二| 91精品啪在线观看国产60岁| 国产欧美日韩一区二区三区在线观看| 韩国av一区二区三区四区| 久久影院视频免费| 国产suv一区二区三区88区| 久久久久久亚洲综合影院红桃| 国产馆精品极品| 亚洲欧美日韩一区二区| 欧美色视频在线| 精品一区二区综合| 亚洲国产精品传媒在线观看| 91农村精品一区二区在线| 亚洲成人一区二区在线观看| 欧美大片在线观看一区二区| 粉嫩一区二区三区性色av| 亚洲精品v日韩精品| 日韩精品在线看片z| 成人h动漫精品一区二区| 亚洲午夜精品在线| 久久综合九色欧美综合狠狠| 94-欧美-setu| 日本欧美韩国一区三区| 国产精品美女久久久久aⅴ国产馆| 91免费观看在线| 美国毛片一区二区三区| 国产精品三级在线观看| 欧美福利视频一区| 国产99久久久久| 天天av天天翘天天综合网色鬼国产| 精品美女被调教视频大全网站| 成人avav影音| 免费在线观看视频一区| 亚洲天堂a在线| 精品粉嫩aⅴ一区二区三区四区| 一本一道久久a久久精品综合蜜臀| 日本美女一区二区| 亚洲欧美另类久久久精品| 日韩视频一区二区三区| 一本一道久久a久久精品| 黄色精品一二区| 天堂影院一区二区| 亚洲色图视频网站| 欧美va日韩va| 在线播放中文字幕一区| 一本一道综合狠狠老| 国产福利一区在线| 蜜桃视频一区二区三区| 夜夜夜精品看看| 国产精品久久久久久亚洲伦 | 亚洲高清免费在线| 国产精品女同互慰在线看| 2017欧美狠狠色| 欧美成人精品福利| 欧美久久一二区| 欧美亚洲动漫精品| 日本久久电影网| 99久久er热在这里只有精品66| 国产一区二区0| 久久国产综合精品| 日本vs亚洲vs韩国一区三区 | 亚洲老妇xxxxxx| 亚洲国产精品激情在线观看| 欧美精品一区二区在线播放| 日韩午夜av一区| 91精品在线观看入口| 欧美日韩中文国产| 欧美吻胸吃奶大尺度电影| 99国产精品一区| 色哟哟欧美精品| 色综合久久中文字幕| 色一情一乱一乱一91av| 色噜噜狠狠色综合中国| 色噜噜狠狠色综合欧洲selulu| 色综合视频在线观看| 日本精品免费观看高清观看| 色成年激情久久综合| 91久久免费观看| 欧美日精品一区视频| 欧美日韩激情一区| 9191精品国产综合久久久久久| 91精品蜜臀在线一区尤物| 在线91免费看| 精品欧美一区二区在线观看| 久久久影视传媒| 中文字幕亚洲精品在线观看| 亚洲精品久久久蜜桃| 亚洲成人免费在线| 日本不卡高清视频| 国产精品99久久久久久有的能看| 成人av资源网站| 欧美在线观看视频在线| 欧美一区二区精品| 久久这里只有精品6| 中文字幕在线不卡一区二区三区| 亚洲品质自拍视频网站| 午夜成人免费视频| 精品一区二区精品| 成人精品高清在线| 欧美人体做爰大胆视频| 久久综合五月天婷婷伊人| 国产精品久久久久久久蜜臀| 亚洲综合激情小说| 久久99精品国产| 97se亚洲国产综合自在线不卡| 欧美美女视频在线观看| 欧美精品一区二区三区四区 | 91.xcao| 久久伊人蜜桃av一区二区| 亚洲日本在线天堂| 久久精品国产澳门| 色综合天天狠狠| 精品欧美乱码久久久久久1区2区| 中文字幕在线不卡一区二区三区| 亚洲123区在线观看| 成人av午夜电影| 欧美一区二区美女| 亚洲精品久久久久久国产精华液| 麻豆国产91在线播放| 99国产一区二区三精品乱码| 欧美一区二区高清| 一区二区三区精品| 狠狠网亚洲精品| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 亚洲情趣在线观看| 久久国产免费看| 欧美在线免费观看亚洲| 国产精品日韩精品欧美在线| 图片区日韩欧美亚洲| 99久久精品国产精品久久| 精品捆绑美女sm三区| 亚洲成人精品影院| 91在线一区二区三区| 久久久久久97三级| 美国十次综合导航| 欧美日韩一区二区在线视频| 国产精品久久久久一区| 国产一区二区三区综合| 欧美精品一卡二卡| 一区二区三区欧美视频| 成人精品免费视频| 久久久91精品国产一区二区精品 | 免费xxxx性欧美18vr| 91福利在线免费观看| 国产精品久久久久影院亚瑟| 国产精品91xxx| 26uuu成人网一区二区三区| 免费看精品久久片| 9191成人精品久久| 五月天一区二区| 欧美色精品在线视频| 亚洲综合在线观看视频| 北岛玲一区二区三区四区 | 国产精品电影一区二区| 国产成人免费视| 国产欧美视频在线观看| 国产精品99久久久久久似苏梦涵 | 欧美群妇大交群的观看方式| 一区二区三区日韩欧美| 91视频你懂的| 亚洲日本va午夜在线电影| 成人av影视在线观看| 国产精品第13页| 91在线看国产| 亚洲男人的天堂在线aⅴ视频| 91婷婷韩国欧美一区二区| 中文字幕一区二区三区在线播放 | 成人免费毛片嘿嘿连载视频| 国产夜色精品一区二区av| 丁香六月久久综合狠狠色| 国产片一区二区三区| www.欧美日韩国产在线| 日韩一区在线看| 欧美性猛交一区二区三区精品| 亚洲国产另类av| 欧美一区二区三区公司| 久久超级碰视频| 国产视频一区不卡| 菠萝蜜视频在线观看一区| 亚洲丝袜精品丝袜在线| 欧美午夜电影在线播放| 日本伊人精品一区二区三区观看方式| 欧美一二三四在线| 国产成人午夜电影网| 中文字幕人成不卡一区| 欧美性猛交xxxxxxxx| 奇米影视一区二区三区| 久久精品一区四区| 91福利视频网站| 青娱乐精品在线视频| 国产亚洲一区二区三区四区| 色网综合在线观看| 午夜亚洲国产au精品一区二区| 日韩欧美国产三级| 成人午夜视频网站| 亚洲不卡在线观看| 国产欧美一区二区精品性色| 欧美怡红院视频| 国产精品一品视频| 亚洲国产中文字幕在线视频综合|