// yuesefu.cpp : Defines the entry point for the console application.
//
//合并有序数组,其中A有足够内存,去掉所有重复数据!!!
#include "StdAfx.h"
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
int CombineArray(int a[], int b[], int lengthA, int lengthB)
{
int i, j;
// int sameNumber = 0;
// for(i=0;i<lengthB;i++)
// for(j=0;j<lengthA;j++)
// if(b[i] == a[j])
// {
// ++ sameNumber;
// break;
// }
//
int lengthANew = lengthA + lengthB;
int indexNew = lengthANew -1;
int indexA = lengthA -1;
int indexB = lengthB -1;
while(indexA >=0 && indexB >=0)
{
if(a[indexA] < b[indexB])
a[indexNew --] = b[indexB --];
else
a[indexNew --] = a[indexA --];
}
if(indexA >= 0)
while(indexA >= 0)
a[indexNew --] = a[indexA --];
if(indexB >= 0)
while(indexB >= 0)
a[indexNew --] = b[indexB --];
for(i = 0, j = 1;j < lengthANew; j++)
if(a[i] != a[j])
a[++ i] = a[j];
a[++ i] = '\0';
int length = i;
return length;
}
void Test(char* testname,int a[], int b[], int lengthA, int lengthB)
{
cout<< testname<<":";
int length = CombineArray(a, b, lengthA, lengthB);
int i;
for(i = 0; i < length;i++)
cout<<a[i]<<' ';
cout<<endl;
}
int main()
{
int a[40]={2,3,9,11};
int b[]={0,1,4,5,6,6,6,7,7,8};
Test("test1",a,b,4, 10);
return 0;
}
合并有序数组
最新推荐文章于 2023-11-11 12:21:37 发布