合并有序数组

// 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;	
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值