// MSBD8_3.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <ctime>
struct ArrayMatch
{
int b_pos;
int a_pos;
};
void matching(int A[], int B[], ArrayMatch C[], int num)
{
srand(time(NULL));
int randNum = rand()%num;
int Ai = A[randNum];
int numEqual = 0;
int numMax = num;
int numMin = -1;
for (int i=0; i<num; i++)
{
if (B[i] > Ai)
{
numMax--;
C[numMax].b_pos = i;
//C[numMax].a_pos = randNum;
}
else if (B[i] < Ai)
{
numMin++;
C[numMin].b_pos = i;
//C[numMin].a_pos = randNum;
}
else if (B[i] == Ai)
{
numEqual = i;
}
}
C[numMin+1].b_pos = numEqual;
C[numMin+1].a_pos = randNum;
for (int i=0; i<num; i++)
{
// 右半部分
if (A[i] > B[numEqual])
{
for (int j=numMin+1; j < num; j++)
{
if (B[C[j].b_pos] == A[i])
{
C[j].a_pos = i;
}
}
}
// 左半部分
if (A[i] < B[numEqual])
{
for (int j=0; j<numMin+1; j++)
{
if (B[C[j].b_pos] == A[i])
{
C[j].a_pos = i;
}
}
}
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[10] = {1,4,2,5,3,7,6,9,8,10};
int b[10] = {7,4,8,1,3,2,10,9,6,5};
ArrayMatch c[10];
matching(a, b, c, 10);
for (int i=0; i<10; i++)
{
printf("B:%d-A:%d\n", c[i].b_pos, c[i].a_pos);
}
system("PAUSE");
return 0;
}
http://blog.youkuaiyun.com/chenyu964877814/article/details/7905544