第七章 查找——直接查找
数据结构基础代码 (严蔚敏 人邮教育出版社)
直接查找在这里分了两种,第一类是查找元素a是否在数组A[n]中,如果查找到即算作查找成功(不统计元素a在数组中出现频次)。第二类,查找元素a在数组A[n]中总的出现次数(即元素a在数组中总的出现次数)。
第一类:成功查找次数
#include <iostream>
#include <stdio.h>
using namespace std;
//直接查找
int search(int A[],int n,int key)
{
int i=0;
A[n]=key; //将关键字暂放于A[n]的位置上。
while(A[i]!=key) //如果A[i]与所查找关键字不一致,继续循环查找。
{
i++;
}
return i!=n;
}
int main()
{
int i,n,A[10000+1],q,key,sum=0;
scanf("%d",&n); //输入具体数组个数。
for(i=0;i<n;i++)
{
scanf("%d",&A[i]); //输入数组
}
scanf("%d",&q); //输入查找关键字总数
for(i=0;i<q;i++)
{
scanf("%d",&key); //输入具体关键字
if(search(A,n,key))
{
sum++; //如果查找结果不为空,查找成功次数+1.
}
}
printf("%d\n",sum);
return 0;
}

数组元素总数5
数组A[4]={1 2 3 4 5}
查找元素总量为3
查找元素数组B[2]={1 2 6}
成功查找次数为2
第二类:查找数组中元素出现总频次
#include <stdio.h>
int search (int A[],int n,int key)
{
int i=0,sum=0;
for (i=0;i<n;i++)
{
if(A[i]==key)
{
sum++;
}
}
return sum;
}
int main()
{
int i,n,q,A[10000+1],key;
scanf("%d",&n); //输入数组元素个数
for(i=0;i<n;i++)
{
scanf("%d",&A[i]); //输入具体元素
}
scanf("%d",&q); //输入查找元素个数
for(i=0;i<q;i++)
{
scanf("%d",&key); //输入查找元素数值
if(search(A,n,key)) //如果search函数中的结果不是0,则输出具体函数值。
{
printf("%d ",search(A,n,key)); //元素在数组中出现次数之和
}
}
return 0;
}

输入数组元素总量为5
数组A[5]={1 2 2 4 5}
查找元素个数为3
查找数组B[3]={1 2 6}
查找到元素1 的个数为1 查找到元素2的个数为2 元素6个数为0
本文深入讲解了数据结构中直接查找的两种类型:查找元素是否存在和查找元素的出现次数。通过C/C++代码示例,详细解析了算法实现过程,包括成功查找次数的统计和元素出现频次的计算。
455

被折叠的 条评论
为什么被折叠?



