实例说明

在已知两个从小到大的有序的数表中寻找出现的相同元素在第一个数表中的指针。

运行结果

实例解析

设两个数表的首元素指针分别为pa和pb,两个数表分别有元素an和bn个。另外,引入两个指针变量ca和cb,分别指向两个数表的当前访问元素。由于两个数表从小到大有序,可让ca和cb同时顺序访问两数表实现寻找,不必对一个数表的每个元素与另一数表的所有元素都要比较。当一个数表的当前元素小于另一个数表的当前元素时,就调整那个当前元素值小的元素的指针,使它指向下一个元素(如果下一个元素存在)如此比较直至当两个数表的当前元素相等,该元素就是在两个数表中都出现的第一个元素,或者其中某个数表已查找完,则判断在两数表中不存在值相等的元素。

程序代码

#include <stdio.h>
/*在已知两个从小到大有序的数表中寻找都出现的第一个元素的指针*/int *search(int *pa,int *pb,int an ,int bn)
{int *ca,*cb;ca=pa;cb=pb;/*为ca,cb设定初值*/while(ca<pa+an&&cb<pa+bn){/*在两个数表中找下一个相等的元素*/if(*ca<*cb)/*数表1的当前元素<数表2的当前元素*/{ca++;}else if(*ca>*cb)/*数表1的当前元素>数表2的当前元素*/{cb++;}else{return ca;}}return NULL;
}
main()/*只是为了引用函数search*/
{int *vp,i;int a[]={1,3,5,7,9,12,17,19,23,35,46};int b[]={2,4,6,7,10,23,24,25,33,45,56};printf("The elements of array a is :");for(i=0;i<sizeof(a)/sizeof(a[0]);i++){printf(" %d ",a[i]);}printf("\nThe elements of array b is :");for(i=0;i<sizeof(b)/sizeof(b[0]);i++){printf(" %d ",b[i]);}vp=search(a,b,sizeof(a)/sizeof(a[0]),sizeof(b)/sizeof(b[0]));if(vp){printf("\n The first same number in both arrays is %d\n",*vp);}else{printf("Not found!\n");}printf("\n Press any key to quit....\n");getchar();}

转载于:https://www.cnblogs.com/huangye123_hi/archive/2012/01/22/2328746.html

妙趣横生算法 3:寻找相同元素的指针相关推荐

  1. c语言用h指针n个数求和,C语言程序经典示例—-(20)寻找指定元素的指针

    #include #define MAX 20 int search(int *apt,/*已知数表的首元指针*/ int n,/*数表中元素个数*/ int key)/*要寻找的值*/ { int ...

  2. 算法 寻找多数元素

    寻找多数元素 一.问题描述: 令A[1.....n]是一个整数序列,A中的整数a如果在A中出现的次数多于[n/2]次,那么a就称为多数元素.例如在序列1,3,2,3,3,4,3中,3是多数元素,应为7 ...

  3. 用分治法设计一个算法,在数组A中寻找最大元素和最小元素 Java代码

    算法分析与设计作业-- 用分治法设计一个算法,在数组A中寻找最大元素和最小元素 public class b1113 {static int min=Integer.MAX_VALUE;static ...

  4. python寻找多数元素_寻找多数元素

    定义:序列中的多数元素是指在一个元素个数为n的序列中,多数元素出现次数大于[n/2]. 寻找元素方法很多: 1.可以暴力搜索,将每个元素都与其他元素作比较,然后统计该元素出现的次数,时间复杂度为O(n ...

  5. 寻找多数元素(主元素)

    问题: 有整型数组a[1-n],如果整数x在数组a中出现的次数多于半数,则x称为多数元素. 初级方法: 计算每一个元素出现的次数,算法复杂度O(NlogN) 可以寻找中间值元素,因为多数元素在序列中必 ...

  6. c语言中的字节和元素,C语言指向数组元素的指针

    指向数组元素的指针和运算法则 所谓指向数组元素的指针,其本质还是变量的指针.因为数组中的每个元素,其实都可以直接看成是一个变量,所以指向数组元素的指针,也就是变量的指针. 指向数组元素的指针不难,但很 ...

  7. 《Algorithm算法》笔记:元素排序(2)——希尔排序

    <Algorithm算法>笔记:元素排序(2)--希尔排序 Algorithm算法笔记元素排序2希尔排序 希尔排序思想 为什么是插入排序 h的确定方法 希尔排序的特点 代码 有关排序的介绍 ...

  8. C语言学习之有一个3X4的二维数组,要求用指向元素的指针变量输出二维数组各元素的值

    有一个3X4的二维数组,要求用指向元素的指针变量输出二维数组各元素的值. int main(){int a[3][4];int i,j,*p;//p是 int *型指针变量printf("请 ...

  9. leetcode初级算法3.存在重复元素

    leetcode初级算法3.存在重复元素 仅为个人刷题记录,不提供解题思路 题解与收获 我的解法: Arrays.sort(nums);for(int i = 0; i < nums.lengt ...

最新文章

  1. [翻译] Ruby Golf
  2. 干货!一文读懂人工智能和机器学习有什么关系
  3. 为什么说雅虎的未来在于回归媒体的初衷
  4. cambridge map
  5. R语言观察日志(part11)--好用的R命令之高效安装
  6. linux 关于休眠得脚本,linux – 如果条件为true,请将cron作业休眠5分钟
  7. 大数据面试-04-大数据工程师面试题
  8. java dozer map转对象_对象转换利器之Dozer
  9. 经典数学书目、各数学分支入门清单
  10. 【WPF】如何获取命令行参数
  11. [置顶] Android代码-----检测手机耳机插拔
  12. smartadmin mysql_SmartAdmin 一套基于SpringBoot和Vue前后端分离的互联网企业级的通用型中后台解决方案...
  13. 珠联网络棋牌游戏 v2.95a 官方
  14. java咖啡机_JAVA咖啡机2010款
  15. selenium中怎么使用autoit
  16. 怎样解决问题 《how to slove it》 《在代码大全里》
  17. android视频采集
  18. Android 音乐播放器
  19. 删除mysql多个实例_多实例数据库删除实例
  20. pcs增加mysql资源_PCS命令配置corosyncpacemaker群集操作步骤.doc

热门文章

  1. Ubuntu中配置NFS服务
  2. 安卓屏幕尺寸相关知识
  3. android 开启wifi失败,[求助]获取基站/wifi信息为空或失败
  4. .classpath文件有什么用_干货分享:Windows目录结构剖析,C盘目录常见文件夹都有什么用?...
  5. python 工资管理软件_4_python之路之模拟工资管理系统
  6. uiswitch样式_Swift - 表格UITableView的plain、grouped两种样式详解(附分组头悬停)
  7. 五款帮助创业者迅速熟悉互联网创业的在线学习工具
  8. 实验一(高见老师收)
  9. django配置templates、static、media和连接mysql数据库
  10. JAVA synchronized关键字锁机制(中)