//有兩等長數組A/B,所含元素相同,但順序不同,只能取得A數組某值和B數組某值進行比較,比較結果爲大於,小於,等於,但是不能取得同一數組A或者B中兩個數進行比較//,也不能取得某數組中的某個值,找到一個好的算法實現正確匹配,(即A數組中某值與B中某值等值),分析算法時間複雜度,寫出算法思路即可。
Store c[10];
void RandCmp(int A[],int B[],int num)
{
srand(1);
int randNum=rand()%num;
int Ai=A[randNum];
int numEqual=0,numMiddle=0;
int numMax=10,numMin=-1;
for(int i=0;i!=num;i++)
{
if(B[i]>Ai)
{
numMax--;
c[numMax].B_position=i;
c[numMax].A_position=randNum;
}
else if(B[i]<Ai)
{
numMin++;
c[numMin].B_position=i;
c[numMin].A_position=randNum;
}
else if(B[i]==Ai)
{
numEqual=i;
}
}
c[numMin+1].B_position=numEqual;
c[numMin+1].A_position=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_position]==A[i])
{
c[j].A_position=i;
}
}
}
if(A[i]<B[numEqual])
{
for(int j=0;j!=numMin+1;j++)
{
if(B[c[j].B_position]==A[i])
{
c[j].A_position=i;
}
}
}
}
}
(待續)...
兩組測試數據:
int a[10]={1,2,3,4,5,6,7,8,9,10};
int b[10]={10,6,4,5,1,8,7,9,3,2};