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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? psrs_sort.c

?? 并行程序設(shè)計(jì)示例之一
?? C
字號:
#include <stdio.h>#include <stdlib.h>#include <mpi.h>#define INIT_TYPE 10#define ALLTOONE_TYPE 100#define ONETOALL_TYPE 200#define MULTI_TYPE 300#define RESULT_TYPE 400#define RESULT_LEN 500#define MULTI_LEN 600int Spt;long DataSize;int *arr,*arr1;int mylength;int *index;int *temp1;main(int argc,char* argv[]){    long BaseNum = 1;    int PlusNum;    int MyID;    MPI_Init(&argc,&argv);    MPI_Comm_rank(MPI_COMM_WORLD,&MyID);    PlusNum=60;    DataSize = BaseNum*PlusNum;    if (MyID==0)        printf("The DataSize is : %lu\n",PlusNum);    Psrs_Main();    if (MyID==0)        printf("\n");    MPI_Finalize();}Psrs_Main( ){    int i,j;    int MyID,SumID;    int n,c1,c2,c3,c4,k,l;    FILE * fp;    int ready;    MPI_Status status[32*32*2];    MPI_Request request[32*32*2];    MPI_Comm_rank(MPI_COMM_WORLD,&MyID);    MPI_Comm_size(MPI_COMM_WORLD,&SumID);    Spt = SumID-1;	/*初始化參數(shù)*/    arr = (int *)malloc(2*DataSize*sizeof(int));    if (arr==0) merror("malloc memory for arr error!");    arr1 = &arr[DataSize];    if (SumID>1)    {        temp1 = (int *)malloc(sizeof(int)*SumID*Spt);        if (temp1==0) merror("malloc memory for temp1 error!");        index = (int *)malloc(sizeof(int)*2*SumID);        if (index==0) merror("malloc memory for index error!");    }    MPI_Barrier( MPI_COMM_WORLD);    mylength = DataSize / SumID;    srand(MyID);    printf("This is node %d \n",MyID);    printf("On node %d the input data is:\n",MyID);    for (i=0;i<mylength;i++)    {        arr[i] = (int)rand();        printf("%d : ",arr[i]);    }    printf("\n");	/*每個(gè)處理器將自己的n/P個(gè)數(shù)據(jù)用串行快速排序(Quicksort),得到一個(gè)排好序的序列,對應(yīng)于算法13.5步驟(1)*/    MPI_Barrier( MPI_COMM_WORLD);    quicksort(arr,0,mylength - 1);    MPI_Barrier( MPI_COMM_WORLD);	/*每個(gè)處理器從排好序的序列中選取第w,2w,3w,…,(P-1)w個(gè)共P-1個(gè)數(shù)據(jù)作為代表元素,其中w=n/P*P,對應(yīng)于算法13.5步驟(2)*/    if (SumID>1)    {        MPI_Barrier(MPI_COMM_WORLD);        n = (int)(mylength/(Spt+1));        for (i=0;i<Spt;i++)            temp1[i] = arr[(i+1)*n-1];        MPI_Barrier(MPI_COMM_WORLD);        if (MyID==0)        {			/*每個(gè)處理器將選好的代表元素送到處理器P0中,對應(yīng)于算法13.5步驟(3) */            j = 0;            for (i=1;i<SumID;i++)                MPI_Irecv(&temp1[i*Spt], sizeof(int)*Spt, MPI_CHAR, i,ALLTOONE_TYPE+i, MPI_COMM_WORLD, &request[j++]);            MPI_Waitall(SumID-1, request, status);			/* 處理器P0將上一步送來的P段有序的數(shù)據(jù)序列做P路歸并,再選擇排序后的第P-1,2(P-1),…,(P-1)(P-1)個(gè)共P-1個(gè)主元,,對應(yīng)于算法13.5步驟(3)*/            MPI_Barrier(MPI_COMM_WORLD);            quicksort(temp1,0,SumID*Spt-1);            MPI_Barrier( MPI_COMM_WORLD);            for (i=1;i<Spt+1;i++)                temp1[i] = temp1[i*Spt-1];			/*處理器P0將這P-1個(gè)主元播送到所有處理器中,對應(yīng)于算法13.5步驟(4)*/            MPI_Bcast(temp1, sizeof(int)*(1+Spt), MPI_CHAR, 0, MPI_COMM_WORLD);            MPI_Barrier(MPI_COMM_WORLD);        }        else        {            MPI_Send(temp1,sizeof(int)*Spt,MPI_CHAR,0,ALLTOONE_TYPE+MyID, MPI_COMM_WORLD);            MPI_Barrier( MPI_COMM_WORLD);            MPI_Barrier( MPI_COMM_WORLD);            MPI_Bcast(temp1, sizeof(int)*(1+Spt), MPI_CHAR, 0, MPI_COMM_WORLD);            MPI_Barrier(MPI_COMM_WORLD);        }		/*每個(gè)處理器根據(jù)上步送來的P-1個(gè)主元把自己的n/P個(gè)數(shù)據(jù)分成P段,記為處理器Pi的第j+1段,其中i=0,…,P-1,j=0,…,P-1,對應(yīng)于算法13.5步驟(5)*/        n = mylength;        index[0] = 0;        i = 1;        while ((arr[0]>=temp1[i])&&(i<SumID))        {            index[2*i-1] = 0;            index[2*i] = 0;            i++;        }        if (i==SumID) index[2*i-1] = n;        c1 = 0;        while (i<SumID)        {            c4 = temp1[i];            c3 = n;            c2 = (int)((c1+c3)/2);            while ((arr[c2]!=c4)&&(c1<c3))            {                if (arr[c2]>c4)                {                    c3 = c2-1;                    c2 = (int)((c1+c3)/2);                }                else                {                    c1 = c2+1;                    c2 = (int)((c1+c3)/2);                }            }            while ((arr[c2]<=c4)&&(c2<n)) c2++;            if (c2==n)            {                index[2*i-1] = n;                for (k=i;k<SumID;k++)                {                    index[2*k] = 0;                    index[2*k+1] = 0;                }                i = SumID;            }            else            {                index[2*i] = c2;                index[2*i-1] = c2;            }            c1 = c2;            c2 = (int)((c1+c3)/2);            i++;        }        if (i==SumID) index[2*i-1] = n;        MPI_Barrier( MPI_COMM_WORLD);		/*每個(gè)處理器送它的第i+1段給處理器Pi,從而使得第i個(gè)處理器含有所有處理器的第i段數(shù)據(jù)(i=0,…,P-1),,對應(yīng)于算法13.5步驟(6)*/        j = 0;        for (i=0;i<SumID;i++)        {            if (i==MyID)            {                temp1[i] = index[2*i+1]-index[2*i];                for (n=0;n<SumID;n++)                    if (n!=MyID)                {                    k = index[2*n+1]-index[2*n];                    MPI_Send(&k, sizeof(int), MPI_CHAR, n, MULTI_LEN+MyID,MPI_COMM_WORLD);                }            }            else            {                MPI_Recv(&temp1[i], sizeof(int), MPI_CHAR, i,MULTI_LEN+i, MPI_COMM_WORLD, &status[j++]);            }        }        MPI_Barrier(MPI_COMM_WORLD);        j = 0;        k = 0;        l = 0;        for (i=0;i<SumID;i++)        {            MPI_Barrier(MPI_COMM_WORLD);            if (i==MyID)            {                for (n=index[2*i];n<index[2*i+1];n++)                    arr1[k++] = arr[n];            }            MPI_Barrier(MPI_COMM_WORLD);            if (i==MyID)            {                for (n=0;n<SumID;n++)                    if (n!=MyID)                {                    MPI_Send(&arr[index[2*n]], sizeof(int)*(index[2*n+1]-index[2*n]),MPI_CHAR, n, MULTI_TYPE+MyID, MPI_COMM_WORLD);                }            }            else            {                l = temp1[i];                MPI_Recv(&arr1[k], l*sizeof(int), MPI_CHAR, i ,MULTI_TYPE+i, MPI_COMM_WORLD, &status[j++]);                k=k+l;            }            MPI_Barrier(MPI_COMM_WORLD);        }        mylength = k;        MPI_Barrier(MPI_COMM_WORLD);		/*每個(gè)處理器再通過P路歸并排序?qū)⑸弦徊降牡降臄?shù)據(jù)排序;從而這n個(gè)數(shù)據(jù)便是有序的,,對應(yīng)于算法13.5步驟(7) */        k = 0;        multimerge(arr1,temp1,arr,&k,SumID);        MPI_Barrier(MPI_COMM_WORLD);    }    printf("On node %d the sorted data is : \n",MyID);    for (i=0;i<mylength;i++)        printf("%d : ",arr[i]);    printf("\n");}/*輸出錯(cuò)誤信息*/merror(char* ch){    printf("%s\n",ch);    exit(1);}/*串行快速排序算法*/quicksort(int *datas,int bb,int ee){    int tt,i,j;    tt = datas[bb];    i = bb;    j = ee;    if (i<j)    {        while(i<j)        {            while ((i<j)&&(tt<=datas[j])) j--;            if (i<j)            {                datas[i] = datas[j];                i++;                while ((i<j)&&(tt>datas[i])) i++;                if (i<j)                {                    datas[j] = datas[i];                    j--;                    if (i==j) datas[i] = tt;                }                else datas[j] = tt;            } else datas[i] = tt;        }        quicksort(datas,bb,i-1);        quicksort(datas,i+1,ee);    }}/*串行多路歸并算法*/multimerge(int *data1,int *ind,int *data,int *iter,int SumID){    int i,j,n;    j = 0;    for (i=0;i<SumID;i++)        if (ind[i]>0)    {        ind[j++] = ind[i];        if (j<i+1) ind[i] = 0;    }    if ( j>1 )    {        n = 0;        for (i=0;i<j,i+1<j;i=i+2)        {            merge(&(data1[n]),ind[i],ind[i+1],&(data[n]));            ind[i] += ind[i+1];            ind[i+1] = 0;            n += ind[i];        }        if (j%2==1 )            for (i=0;i<ind[j-1];i++) data[n++]=data1[n];        (*iter)++;        multimerge(data,ind,data1,iter,SumID);    }}merge(int *data1,int s1,int s2,int *data2){    int i,l,m;    l = 0;    m = s1;    for (i=0;i<s1+s2;i++)    {        if (l==s1)            data2[i]=data1[m++];        else        if (m==s2+s1)            data2[i]=data1[l++];        else        if (data1[l]>data1[m])            data2[i]=data1[m++];        else            data2[i]=data1[l++];    }}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲男同性视频| 26uuu精品一区二区三区四区在线| 亚洲欧洲日本在线| 99视频精品在线| 亚洲综合色婷婷| 欧美老女人在线| 美女免费视频一区二区| 日韩你懂的在线观看| 国产成人啪午夜精品网站男同| 久久久久久久久蜜桃| av色综合久久天堂av综合| 亚洲男人的天堂在线观看| 欧美日韩大陆在线| 久久99国产精品久久99| 国产亚洲污的网站| 99精品久久久久久| 日韩在线一区二区三区| 久久久精品日韩欧美| 一本色道**综合亚洲精品蜜桃冫| 午夜精品久久久久久久99樱桃| 欧美日韩国产另类不卡| 黄色日韩三级电影| 亚洲三级在线免费观看| 日韩视频永久免费| 成人激情电影免费在线观看| 亚洲第一主播视频| 国产调教视频一区| 欧美日韩免费观看一区三区| 国产美女主播视频一区| 亚洲精品视频在线观看免费| 欧美裸体bbwbbwbbw| 国产一区二区三区黄视频| 亚洲六月丁香色婷婷综合久久 | 欧美经典三级视频一区二区三区| 91亚洲精华国产精华精华液| 青青草原综合久久大伊人精品优势| 国产欧美日韩麻豆91| 欧美日本在线一区| 99久久夜色精品国产网站| 精品一区二区在线免费观看| 一区二区三区四区国产精品| 精品久久久久久亚洲综合网| 欧洲国产伦久久久久久久| 国产传媒欧美日韩成人| 蜜臀av一区二区在线观看| 亚洲日本va在线观看| 久久无码av三级| 日韩一区二区三区四区| 一本一本大道香蕉久在线精品| 国产真实乱子伦精品视频| 亚洲成av人片在线观看无码| 中文一区在线播放| 欧美电影免费观看完整版| 在线看一区二区| a美女胸又www黄视频久久| 国内外成人在线视频| 日韩精品福利网| 亚洲在线视频一区| 亚洲六月丁香色婷婷综合久久 | 激情欧美日韩一区二区| 婷婷激情综合网| 一区二区三区电影在线播| 国产亚洲综合在线| 久久综合色播五月| 日韩亚洲欧美在线观看| 欧美日韩国产片| 欧美日韩视频在线第一区| 97成人超碰视| 97精品国产97久久久久久久久久久久| 国产精品亚洲综合一区在线观看| 裸体一区二区三区| 奇米四色…亚洲| 蜜桃视频第一区免费观看| 午夜国产精品一区| 日韩av电影免费观看高清完整版| 亚洲一区在线视频观看| 亚洲国产精品久久一线不卡| 一区二区成人在线| 一区二区免费在线| 亚洲国产成人高清精品| 亚洲国产精品欧美一二99| 亚欧色一区w666天堂| 亚洲成人免费看| 人妖欧美一区二区| 国产尤物一区二区在线 | 国产精品99久久久久久久vr| 国产精选一区二区三区| 国产夫妻精品视频| 91在线云播放| 欧美日韩亚洲综合在线| 欧美一级在线视频| 精品成人免费观看| 欧美激情一区在线| 亚洲精品乱码久久久久久日本蜜臀| 亚洲男帅同性gay1069| 亚洲va欧美va国产va天堂影院| 日韩av一区二区在线影视| 久久精品99国产国产精| 国产成人久久精品77777最新版本| 国产jizzjizz一区二区| 91丨国产丨九色丨pron| 91精品久久久久久久久99蜜臂| 日韩亚洲欧美高清| 亚洲国产成人在线| 一区二区在线观看视频| 日韩电影一二三区| 粉嫩高潮美女一区二区三区| 在线免费观看日本一区| 欧美成va人片在线观看| 国产精品美女久久久久久久久久久 | 国内外精品视频| 92精品国产成人观看免费| 欧美美女直播网站| 国产欧美一区二区在线观看| 亚洲黄色性网站| 久久99精品久久久久久动态图| 成人精品gif动图一区| 欧美偷拍一区二区| 日韩欧美国产三级| 亚洲卡通欧美制服中文| 精品亚洲欧美一区| 91蜜桃传媒精品久久久一区二区| 91精品国产欧美一区二区18| 国产精品色婷婷| 老汉av免费一区二区三区| 色中色一区二区| 国产色综合久久| 日日夜夜免费精品| 99久久精品免费| 精品久久久久一区二区国产| 亚洲制服丝袜av| av网站免费线看精品| 精品国产乱码久久久久久影片| 一区二区三区在线播| 国产成人综合亚洲网站| 在线播放日韩导航| 亚洲男帅同性gay1069| 国产成人在线色| 日韩女优av电影| 午夜激情综合网| 色一情一乱一乱一91av| 日本一二三不卡| 久久99在线观看| 欧美区视频在线观看| 亚洲柠檬福利资源导航| 丁香婷婷综合激情五月色| 日韩欧美视频在线| 视频一区视频二区中文字幕| 色悠久久久久综合欧美99| 欧美激情一区二区三区不卡| 久久丁香综合五月国产三级网站| 欧美日韩国产综合视频在线观看| 亚洲天堂久久久久久久| 成人免费毛片app| 国产亚洲短视频| 国产一区二区视频在线播放| 日韩精品一区二区三区在线观看| 日韩中文字幕91| 777午夜精品免费视频| 亚洲韩国精品一区| 色婷婷久久综合| 亚洲精品一二三四区| 色综合天天在线| 亚洲精品乱码久久久久久日本蜜臀| jizzjizzjizz欧美| 国产精品日韩成人| 99在线热播精品免费| 国产精品盗摄一区二区三区| 波多野结衣在线aⅴ中文字幕不卡| 中文字幕第一区综合| 成人小视频免费观看| 国产精品免费久久| 99国产精品国产精品久久| 亚洲手机成人高清视频| 91丨九色丨蝌蚪丨老版| 亚洲男人天堂av网| 欧美日韩一本到| 青青草原综合久久大伊人精品优势| 欧美一级片在线观看| 激情综合五月天| 亚洲国产精品激情在线观看| 99在线精品视频| 夜夜嗨av一区二区三区中文字幕| 一本一本久久a久久精品综合麻豆| 一区二区在线观看免费| 欧美美女bb生活片| 久久国产精品色婷婷| 欧美激情综合在线| 91免费在线看| 日韩精品乱码av一区二区| 精品毛片乱码1区2区3区| 国产成人午夜精品影院观看视频| 亚洲图片另类小说| 欧美高清www午色夜在线视频| 免费在线观看精品| 中文字幕成人网| 欧美日韩一级二级| 国产传媒日韩欧美成人| 亚洲一区二三区| 精品国产制服丝袜高跟|