# include “stdafx.h”, # include & lt; iostream> # include & lt; Windows.h> # include & lt; Winternl.h> # include & lt; tchar.h> # include & lt; winbase.h> using namespace 性传播疾病; # define THREADS_NUMBER 2 # define ELEMENTS_NUMBER 200年 # define BLOCK_SIZE ELEMENTS_NUMBER /, THREADS_NUMBER # define MAX_VALUE 1000年 typedef struct  _tagARRAYOBJECT { int *, iArray; int iSize; int iThreadID, },ARRAYOBJECT,, * PARRAYOBJECT; DWORD WINAPI  ThreadStart (lpParameter, LPVOID ); void PrintArray (int *大敌;iArray,, int iSize); void MergeArrays (int *, leftArray,, int leftArrayLenght,, int *, rightArray,, int rightArrayLenght,, int *, mergedArray); 命令行参数个数,int _tmain (int _TCHAR *, argv []) { int iArray1 [BLOCK_SIZE]; int iArray2 [BLOCK_SIZE]; int iArray [ELEMENTS_NUMBER]; 时间=for (int iIndex 0;, iIndex & lt;, BLOCK_SIZE;, iIndex + +) { iArray1 [iIndex],=, rand (), %, MAX_VALUE; iArray2 [iIndex],=, rand (), %, MAX_VALUE; } HANDLE hThreads [THREADS_NUMBER]; ARRAYOBJECT pObject1 =, {,, (iArray1 [0]),, BLOCK_SIZE,, 0,}; hThreads [0],=, CreateThread (NULL,, 0,, (LPTHREAD_START_ROUTINE) ThreadStart(值),,pObject1,, 0,, NULL),, ARRAYOBJECT pObject2 =, {,, (iArray2 [0]),, BLOCK_SIZE,, 1,}; hThreads [1],=, CreateThread (NULL,, 0,, (LPTHREAD_START_ROUTINE) ThreadStart,(值),,pObject2,, 0,, NULL); cout<& lt;“Waiting 执行…”,& lt; & lt;, endl; WaitForMultipleObjects (THREADS_NUMBER, hThreads,,真的,,无限的),, MergeArrays(和iArray1 [0],, BLOCK_SIZE,,, iArray2 [0],, BLOCK_SIZE,,, iArray [0]); PrintArray (iArray, ELEMENTS_NUMBER); CloseHandle (hThreads [0]); CloseHandle (hThreads [1]); cout<& lt;,“Array 排序…”,& lt; & lt;, endl; 获取字符(); return 0; }, DWORD WINAPI  ThreadStart (LPVOID lpParameter) { PARRAYOBJECT pObject =, (PARRAYOBJECT) lpParameter; int iTmp =, 0; 时间=for (int iIndex 0;, iIndex & lt;, pObject→iSize;, iIndex + +) { 时间=for (int iEndIndex pObject→iSize 作用;1;,iEndIndex 祝辞,iIndex;, iEndIndex——), { if (pObject→iArray [iEndIndex], & lt;, pObject→iArray [iIndex]) { 时间=iTmp pObject→iArray [iEndIndex]; pObject→iArray [iEndIndex],=, pObject→iArray [iIndex]; pObject→iArray [iIndex],=, iTmp; } } } return 0; }, void PrintArray (int *, iArray,, int iSize), { 时间=for (int iIndex 0;, iIndex & lt;, iSize;, iIndex + +), { cout & lt; & lt;,“,”, & lt; & lt;, iArray [iIndex]; } cout & lt; & lt;, endl;, } void MergeArrays (int *, leftArray,, int leftArrayLenght,, int *,, rightArray,, int rightArrayLenght,, int *, mergedArray) { int 小姐:=,0; int j =, 0; int k =, 0; while (小姐:& lt;, leftArrayLenght ,,, j & lt;, rightArrayLenght) { if (leftArray[我],& lt;, rightArray [j]) { mergedArray [k],=, leftArray[我]; 我+ +; } 其他的 { mergedArray [k],=, rightArray [j]; + +; } k + +; } if (小姐:祝辞=,leftArrayLenght) { while (j & lt;, rightArrayLenght) { mergedArray [k],=, rightArray [j]; + +; k + +; } } if (j 祝辞=,rightArrayLenght) { while (小姐:& lt;, leftArrayLenght) { mergedArray [k],=, leftArray[我]; 我+ +; k + +; } } }
运行结果: