弱龄寄事外,委怀在琴书。这篇文章主要讲述#yyds干货盘点# 查找算法——抽签算法(或称为最优秀算法别顶要脸)相关的知识,希望能为你提供帮助。
文章图片
抽签算法的基本思想
抽签是中国的民间习俗,是占卜的其中一种形式。那么可以抽签的形式随机找出序列中的元素进行比对,如果运气足够好,那么不管多少元素,都只需要比对一次,这就是这个算法最神秘之处,用阳寿来查找。
步骤
- 产生一个随机数 $randNum$
- 随机数对数组长度进行取余获取抽中元素的下标 $index=randNum%length$
- 与目标元素进行比较,如果不相等,则重复1、2;直至找到
在序列 $[3,44,38,5,47,15,36,26,1,2]$ 中查找 2
- 第一种结果:查找 1 次
文章图片
- 第二种结果:查找 18 次
文章图片
- 第三种结果:查找 3 次
文章图片
```c++
#include < iostream>
#include < cstdlib>
#include < ctime>
using namespace std;
//抽签算法
void DrawAlgorithm(int nums[],int num,int n){
srand((int)time(0)); //产生随机种子
int count=0,randNum,bound=n*n;
while(true& & count< bound){//当寻找次数到达 bound 时停止
count++;
randNum=rand()%n; //生成随机数
if(nums[randNum]==num){
break; //如果找到 num,则 break 退出循环
}
}
cout< < " 已找到 " < < num< < " ,寻找次数 count:" < < count;
}
//打印数组
void printNum(int numbers[],int n){
for(int i=0; i< n; i++){
cout< < numbers[i]< < " " ;
}
cout< < endl;
}
【#yyds干货盘点# 查找算法——抽签算法(或称为最优秀算法别顶要脸)】int main()
{
int numbers[10]={3,44,38,5,47,15,36,26,1,2};
int n=sizeof(numbers)/sizeof(numbers[0]); //数组长度
cout< < " 序列为:" ;
printNum(numbers,n); //打印数组
DrawAlgorithm(numbers,2,n); //调用 DrawAlgorithm 函数在 numbers 序列中进行抽签查找 2
return 0;
}
**算法性能分析**- 空间复杂度:$O(1)$
- 时间复杂度
- 最好情况下时间复杂度:$O(1)$
- 最坏情况下时间复杂度:不确定
推荐阅读
- #yyds干货盘点#hyperf自定义验证与格式化输出验证信息
- #yyds干货盘点# 你怎么总是能写出两三千行的controller类()
- WordPress-自定义模板上的分页未显示(Lollum Framework-Lotusflower主题)
- 具有自定义主题的WordPress分页不起作用
- WordPress分页不起作用与第1页相同的第2页
- WordPress分页没有显示在类别页面上
- WordPress(页面模板条件检查在functions.php中不起作用)
- WordPress页面未显示CSS
- WordPress的页面生成器不显示