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

简介:

《数据结构与算法分析,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,如需转载请自行联系原作者

相关文章
|
2月前
|
机器学习/深度学习 算法
递归算法题练习(数的计算、带备忘录的递归、计算函数值)
递归算法题练习(数的计算、带备忘录的递归、计算函数值)
|
2月前
|
算法 Java
算法:Java计算二叉树从根节点到叶子结点的最大路径和
算法:Java计算二叉树从根节点到叶子结点的最大路径和
|
4月前
|
算法 搜索推荐 图计算
图计算中的社区发现算法是什么?请解释其作用和常用算法。
图计算中的社区发现算法是什么?请解释其作用和常用算法。
33 0
|
5月前
|
搜索推荐 算法 测试技术
C++归并排序算法的应用:计算右侧小于当前元素的个数
C++归并排序算法的应用:计算右侧小于当前元素的个数
|
1天前
|
资源调度 算法 块存储
m基于遗传优化的LDPC码OMS译码算法最优偏移参数计算和误码率matlab仿真
MATLAB2022a仿真实现了遗传优化的LDPC码OSD译码算法,通过自动搜索最佳偏移参数ΔΔ以提升纠错性能。该算法结合了低密度奇偶校验码和有序统计译码理论,利用遗传算法进行全局优化,避免手动调整,提高译码效率。核心程序包括编码、调制、AWGN信道模拟及软输入软输出译码等步骤,通过仿真曲线展示了不同SNR下的误码率性能。
7 1
|
4天前
|
算法 Serverless
m基于遗传优化的LDPC码NMS译码算法最优归一化参数计算和误码率matlab仿真
MATLAB 2022a仿真实现了遗传优化的归一化最小和(NMS)译码算法,应用于低密度奇偶校验(LDPC)码。结果显示了遗传优化的迭代过程和误码率对比。遗传算法通过选择、交叉和变异操作寻找最佳归一化因子,以提升NMS译码性能。核心程序包括迭代优化、目标函数计算及性能绘图。最终,展示了SNR与误码率的关系,并保存了关键数据。
13 1
|
14天前
|
算法 TensorFlow 算法框架/工具
基于直方图的图像阈值计算和分割算法FPGA实现,包含tb测试文件和MATLAB辅助验证
这是一个关于图像处理的算法实现摘要,主要包括四部分:展示了四张算法运行的效果图;提到了使用的软件版本为VIVADO 2019.2和matlab 2022a;介绍了算法理论,即基于直方图的图像阈值分割,通过灰度直方图分布选取阈值来区分图像区域;并提供了部分Verilog代码,该代码读取图像数据,进行处理,并输出结果到&quot;result.txt&quot;以供MATLAB显示图像分割效果。
|
4月前
|
算法
bellman_ford算法与dijkstra为什么dijkstra算法不能计算带有负权边图
bellman_ford算法与dijkstra为什么dijkstra算法不能计算带有负权边图
23 0
|
4月前
|
算法 定位技术 Python
地图权重计算(算法题)
地图权重计算(算法题)
22 0
|
4月前
|
算法 搜索推荐 数据挖掘
图计算中的图算法有哪些常见的类型?请举例说明每种类型的算法。
图计算中的图算法有哪些常见的类型?请举例说明每种类型的算法。
41 0