前言
提示:忙里偷闲,写点小算法。
提示:以下是本篇文章正文内容,下面案例可供参考
一、顺序查找
1.伪代码
//顺序查找的算法实现,用待查找数K作限位器
//输入一个有n个元素的数组a[]和一个待查找数K
//输出第一个等于待查找数的位置i,没找到则返回-1
a[n]⬅K
i⬅0
while a[i]≠K do
i⬅i+1
if i<n return i
else return -1
2.C++实现
#include "iostream"
#include "stdlib.h" //需要用随机函数
#include "time.h" //需要用time函数
using namespace std;
//顺序查找
int main()
{
int key;//保存待查找数
srand((unsigned)time(NULL));//设置随机数种子
int num[21];
for(int i=0;i<20;i++)//赋值
{
num[i]=rand();
}
for(int i=0;i<20;i++)
{
cout<<num[i]<<" ";
}
cout<<endl;
cout<<"请输入查找数:"<<endl;
cin>>key;
num[21]=key;//提高查找效率,把key放在数组最后面
int j=0;
while(num[j]!=key)
{
j++;
}
if(j<21)
cout<<"目标数在下标为"<<j<<"的位置"<<endl;
else
cout<<"没有找到目标数"<<endl;
return 0;
}
3.运行截图
二、蛮力法进行字符串匹配
1.伪代码
//该算法实现了蛮力字符串匹配
//输入一个n个字符数组T,代表一段文本
//一个m个字符数组P,代表一个匹配串
//查找成功则返文本中第一个匹配串的下标,否则返回-1
for i⬅0 to m-n do
j⬅0
while j<m and P[j]=T[i+j] do
j⬅j+1
if j=m return i
return -1
2.C++实现
//蛮力字符串匹配
#include "iostream"
#include "string.h"
#include "cstdio"
using namespace std;
int main()
{
string text="";//文本字符串
string find="";//待查找字符串
cout<<"请输入文本字符串:"<<endl;
cin>>text;
cin.sync();//清除缓冲区
cout<<"请输入待查找字符串:"<<endl;
cin>>find;
int n=text.length();//保存文本字符串长度
int m=find.length();//保存待查找字符串长度
bool flag=false;//判断是否找到了
for(int i=0;i<=n-m;i++)//只需要遍历到n-m处
{
int j=0;
while(j<m&&(find[j]==text[i+j]))//开始进行匹配
{
j++;
if (j==m)//匹配成功
{
cout<<"匹配字符串从下标"<<i<<"处开始."<<endl;
flag=true;
break;
}
}
}
if(flag==false)
cout<<"没有找到匹配的字符串."<<endl;
return 0;
}