5hahab
یک شنبه 02 خرداد 1395, 14:28 عصر
عدد یه میلیون و دو میلیون توی int جا نمیشن از چه نوعی باید معرفی کنم?
سوال: برنامه اي يک آرايه دو ميليوني را گرفته سپس با استفاده از دو نخ يکي از نخ ها از صفر تا يک ميليون و ديگري از يک ميليون تا دو ميليون را مرتب کند سپس دو آرايه مرتب را باهم ادغام کند
#include <stdio.h>
#include <windows.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
DWORD Sort[2]={0,0};
int prm [2][1]={{0,1000000},{1000001,2000000}};
DWORD WINAPI summation (LPvoid param);
{int TId=*(int) param;
for ( DWORD i=prm [TId][0]; i<=prm[TId][1]; i++ )
{
//sort
int Sort( int A[], int p, int q)
{
int temp;
int x = A[p];
int i = p;
for (int j = p+1; j <= q; j++)
{
if (A[j] <= x)
{
i++;
temp = A[j];
A[j] = A[i];
A[i] = temp;
}
}
temp = A[i];
A[i] = A[p];
A[p] = temp;
return i;
}
}
}
int main(int argc, char** argv) {
DWORD ThreadID [2];
HANDLE ThreadHandle [2];
int p[2]={0,1};
for (int i=0; i<2; i++)
ThreadHandle[i] = CreateThread (NULL,0,summation,&p[i],0,&ThreadID[i]);
for (int i=0; i<2; i++)
WaitForSingleObject(ThreadHandle[i],INFINITE);
//merge
void merge( int arr[ ], int low, int mid, int high )
{
int i, j, k, t;
j = low;
for( i = mid + 1 ; i <= high ; i++ )
{
while( arr[ j ] <= arr[ i ] && j < i )
{
j++;
}
if( j == i )
{
break;
}
t = arr[ i ];
for( k = i ; k > j ; k -- )
{
arr[ k ] = arr[ k - 1 ];
}
arr[ j ] = t;
}
}
printf(s);
return 0;
}
سوال: برنامه اي يک آرايه دو ميليوني را گرفته سپس با استفاده از دو نخ يکي از نخ ها از صفر تا يک ميليون و ديگري از يک ميليون تا دو ميليون را مرتب کند سپس دو آرايه مرتب را باهم ادغام کند
#include <stdio.h>
#include <windows.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
DWORD Sort[2]={0,0};
int prm [2][1]={{0,1000000},{1000001,2000000}};
DWORD WINAPI summation (LPvoid param);
{int TId=*(int) param;
for ( DWORD i=prm [TId][0]; i<=prm[TId][1]; i++ )
{
//sort
int Sort( int A[], int p, int q)
{
int temp;
int x = A[p];
int i = p;
for (int j = p+1; j <= q; j++)
{
if (A[j] <= x)
{
i++;
temp = A[j];
A[j] = A[i];
A[i] = temp;
}
}
temp = A[i];
A[i] = A[p];
A[p] = temp;
return i;
}
}
}
int main(int argc, char** argv) {
DWORD ThreadID [2];
HANDLE ThreadHandle [2];
int p[2]={0,1};
for (int i=0; i<2; i++)
ThreadHandle[i] = CreateThread (NULL,0,summation,&p[i],0,&ThreadID[i]);
for (int i=0; i<2; i++)
WaitForSingleObject(ThreadHandle[i],INFINITE);
//merge
void merge( int arr[ ], int low, int mid, int high )
{
int i, j, k, t;
j = low;
for( i = mid + 1 ; i <= high ; i++ )
{
while( arr[ j ] <= arr[ i ] && j < i )
{
j++;
}
if( j == i )
{
break;
}
t = arr[ i ];
for( k = i ; k > j ; k -- )
{
arr[ k ] = arr[ k - 1 ];
}
arr[ j ] = t;
}
}
printf(s);
return 0;
}