两个有序数组归并为一个有序数组(去重)
2013-09-25 00:30
267 查看
#include "stdafx.h"
#include "stdlib.h"
#include "string.h"
void Adjust(int a[], int m, int b[], int n)
{
int c[100];
int i = 0;
int j = 0;
int k =0;
while ((i != m) && (j != n))
{
if (a[i] == b[j])
{
c[k++] = a[i];
i++;
j++;
}
else
{
while (a[i] < b[j])
{
c[k++] = a[i];
i++;
}
while(a[i] > b[j])
{
c[k++] = b[j];
j++;
}
}
}
while (i != m)
{
c[k++] = a[i];
i++;
}
while (j != n)
{
c[k++] = b[j];
j++;
}
for (int i = 0; i < k; i++)
{
printf("%d\r\n", c[i]);
}
return;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[6] = {1,3,4,7,9,10};
int b[7] = {2,3,4,5,7,8,9};
Adjust(a,6,b,7);
system("pause");
return 0;
}
#include "stdlib.h"
#include "string.h"
void Adjust(int a[], int m, int b[], int n)
{
int c[100];
int i = 0;
int j = 0;
int k =0;
while ((i != m) && (j != n))
{
if (a[i] == b[j])
{
c[k++] = a[i];
i++;
j++;
}
else
{
while (a[i] < b[j])
{
c[k++] = a[i];
i++;
}
while(a[i] > b[j])
{
c[k++] = b[j];
j++;
}
}
}
while (i != m)
{
c[k++] = a[i];
i++;
}
while (j != n)
{
c[k++] = b[j];
j++;
}
for (int i = 0; i < k; i++)
{
printf("%d\r\n", c[i]);
}
return;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a[6] = {1,3,4,7,9,10};
int b[7] = {2,3,4,5,7,8,9};
Adjust(a,6,b,7);
system("pause");
return 0;
}
相关文章推荐
- 动易2006序列号破解算法公布
- C#数据结构与算法揭秘二
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- 探讨C语言的那些小秘密之断言
- 深入探讨C语言中局部变量与全局变量在内存中的存放位置
- 基于C语言fflush()函数的使用详解
- 关于C语言除0引发的思考
- 深入分析C中不安全的sprintf与strcpy
- C中实现矩阵乘法的一种高效的方法
- c语言printf函数的使用详解
- C语言学籍管理系统源代码
- 浅析C语言中的sizeof
- c语言内存泄露示例解析
- 浅析C语言位域和位段
- 解析C语言中位字段内存分配的问题
- 学生成绩管理系统C语言代码实现
- 基于C语言sprintf函数的深入理解
- C语言中函数声明与调用问题
- 基于malloc与free函数的实现代码及分析