[经典算法题]计算两个有序表交集并集

简介:

《数据结构与算法分析,C语言描述》 表,栈与队列部分课后习题。

Just a test,记录。

outPut:

 
  1. Array No.1:2 4 5 7 10 23  
  2. Array No.2:3 4 7 13 22 30  
  3. Sum intersection:2  
  4. 4 7  
  5. Sum union section:10  
  6. 2 3 4 5 7 10 13 22 23 30 


Code:
 

 
  1. //Code by Pnig0s1992  
  2. //Date:2012,3,22  
  3. #include <stdio.h>  
  4. #include <Windows.h>  
  5.  
  6. #define MAX_ITEM 12  
  7.  
  8. int getInterSection(int arr1[],int arr2[],int arrRc[]);  
  9. int getUnionSection(int arr1[],int arr2[],int arrRc[]);  
  10.  
  11. int main(int argc,char ** argv)  
  12. {  
  13.     int index = 0;  
  14.     int iArray1[6] = {2,4,5,7,10,23};  
  15.     int iArray2[6] = {3,4,7,13,22,30};  
  16.     int iResult[MAX_ITEM];  
  17.     printf("\nArray No.1:");  
  18.     for(index = 0;index< 6;index++)  
  19.     {  
  20.         printf("%d ",iArray1[index]);  
  21.     }  
  22.     printf("\nArray No.2:");  
  23.     for(index = 0;index<6;index++)  
  24.     {  
  25.         printf("%d ",iArray2[index]);  
  26.     }  
  27.     int sumInter = getInterSection(iArray1,iArray2,iResult);  
  28.     printf("\nSum intersection:%d\n",sumInter);  
  29.     for(int i=0;i<sumInter;i++)  
  30.     {  
  31.         printf("%d ",iResult[i]);  
  32.     }  
  33.     int sumUnion = getUnionSection(iArray1,iArray2,iResult);  
  34.     printf("\nSum union section:%d\n",sumUnion);  
  35.     for(int j = 0;j<sumUnion;j++)  
  36.     {  
  37.         printf("%d ",iResult[j]);  
  38.     }  
  39.     system("pause");  
  40.     return 0;  
  41. }  
  42.  
  43. int getInterSection(int arr1[],int arr2[],int arrRc[])  
  44. {  
  45.     int i = 0;  
  46.     int j = 0;  
  47.     int k = 0;  
  48.     while(i<6&&j<6)  
  49.     {  
  50.         if(arr1[i] == arr2[j])  
  51.         {  
  52.             arrRc[k] = arr1[i];  
  53.             i++,j++,k++;  
  54.         }  
  55.         else if(arr1[i] < arr2[j])  
  56.             i++;  
  57.         else 
  58.             j++;  
  59.     }  
  60.     return k;  
  61. }  
  62.  
  63. int getUnionSection(int arr1[],int arr2[],int arrRc[])  
  64. {  
  65.     int i = 0,j=0,k=0;  
  66.     while(i<6 && j<6 )  
  67.     {  
  68.         if(arr1[i] < arr2[j])  
  69.         {  
  70.             arrRc[k] = arr1[i];  
  71.             i++,k++;  
  72.         }else if(arr1[i] > arr2[j])  
  73.         {  
  74.             arrRc[k] = arr2[j];  
  75.             j++;k++;  
  76.         }else 
  77.         {  
  78.             arrRc[k] = arr1[i];  
  79.             i++,j++,k++;  
  80.         }  
  81.     }  
  82.     if(i<6)  
  83.     {  
  84.         for (;i<6;i++)  
  85.         {  
  86.             arrRc[k++] = arr1[i];  
  87.         }  
  88.     }else if(j<6)  
  89.     {  
  90.         for (;j<6;j++)  
  91.         {  
  92.             arrRc[k++] = arr2[j];  
  93.         }  
  94.     }  
  95.     return k;  

 















本文转hackfreer51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/813949,如需转载请自行联系原作者

相关文章
|
4月前
|
算法 JavaScript 数据安全/隐私保护
基于GA遗传优化的最优阈值计算认知异构网络(CHN)能量检测算法matlab仿真
本内容介绍了一种基于GA遗传优化的阈值计算方法在认知异构网络(CHN)中的应用。通过Matlab2022a实现算法,完整代码含中文注释与操作视频。能量检测算法用于感知主用户信号,其性能依赖检测阈值。传统固定阈值方法易受噪声影响,而GA算法通过模拟生物进化,在复杂环境中自动优化阈值,提高频谱感知准确性,增强CHN的通信效率与资源利用率。预览效果无水印,核心程序部分展示,适合研究频谱感知与优化算法的学者参考。
|
6月前
|
算法 数据安全/隐私保护
基于Big-Bang-Big-Crunch(BBBC)算法的目标函数最小值计算matlab仿真
该程序基于Big-Bang-Big-Crunch (BBBC)算法,在MATLAB2022A中实现目标函数最小值的计算与仿真。通过模拟宇宙大爆炸和大收缩过程,算法在解空间中搜索最优解。程序初始化随机解集,经过扩张和收缩阶段逐步逼近全局最优解,并记录每次迭代的最佳适应度。最终输出最佳解及其对应的目标函数最小值,并绘制收敛曲线展示优化过程。 核心代码实现了主循环、粒子位置更新、适应度评估及最优解更新等功能。程序运行后无水印,提供清晰的结果展示。
124 14
|
11月前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
175 0
|
11月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
216 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
12月前
|
算法 数据可视化 数据安全/隐私保护
基于LK光流提取算法的图像序列晃动程度计算matlab仿真
该算法基于Lucas-Kanade光流方法,用于计算图像序列的晃动程度。通过计算相邻帧间的光流场并定义晃动程度指标(如RMS),可量化图像晃动。此版本适用于Matlab 2022a,提供详细中文注释与操作视频。完整代码无水印。
|
12月前
|
算法 C++
如何精确计算出一个算法的CPU运行时间?
如何精确计算出一个算法的CPU运行时间?
|
算法 Go Python
[算法]计算斐波拉契数列
[算法]计算斐波拉契数列
|
机器学习/深度学习 算法
**反向传播算法**在多层神经网络训练中至关重要,它包括**前向传播**、**计算损失**、**反向传播误差**和**权重更新**。
【6月更文挑战第28天】**反向传播算法**在多层神经网络训练中至关重要,它包括**前向传播**、**计算损失**、**反向传播误差**和**权重更新**。数据从输入层流经隐藏层到输出层,计算预测值。接着,比较预测与真实值计算损失。然后,从输出层开始,利用链式法则反向计算误差和梯度,更新权重以减小损失。此过程迭代进行,直到损失收敛或达到训练次数,优化模型性能。反向传播实现了自动微分,使模型能适应训练数据并泛化到新数据。
185 2
|
算法
计算空间物体包围球的两种算法实现
计算空间物体包围球的两种算法实现
133 0
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题

热门文章

最新文章