当前课程知识点:程序设计基础 > 第四章 筛法与查找 > 4.3 线性查找 > 4.3.4 最小值问题代码翻译
首先我要记录当前的最小值和位置
根据之前的经验 这种记录我们就要设置两个变量
一个是当前最小值的变量
一个是最小值所在的位置这样一个变量
那我分别把它起名为Min最小值
以及POS position最小值所在的位置
那分别给它们一个初始值
POS=-1这个跟刚才一样的 比较好理解
-1表示我现在还没找到这个最小值
那后面我需要拿这个最小值去跟手里的一张一张的牌去比
看看手里的牌是不是比这张牌要小
那我显然不希望说初始化为0
没有人去比这个0更小了
我这个问题就得不到解
所以这种时候求最小值我们一般会给它一个比较大的一个初值
比如说我这个问题里面 手里的牌不可能比100还要大
那我就给它设一个初值是100
如果我要求的是一个最大值
那我可能会把这个初值设置一个问题不可能取到的一个很小的数
比如0或者-1或者-100等等
接下来是依次枚举每一张牌
这个写了很多次了 我们就把它写成一个for循环
每一张牌就是数组当中每一个元素
i等于0到i小于13
接下来如果比7大
那么显然是一个if的判断语句
判断数组当中第i项是不是比7还要大
那么根据我们刚才的扑克的整数的定义
我们现在的规则不关心它的花色
所以我们得把刚才定义当中的花色信息去掉
怎么来去呢 其实就是把这个数取100以后的那个位数
我们这里把cards[i]这样一个数值模上100
就是取了后面100以下的那个数
看看这个数值是不是比7大
判断完比7大之后还要去跟最小值去比
下一句就是还是一个if判断
去跟最小值Min来去比
如果模上100的这个数值比Min还要小
那么下面我们更新最小值以及位置
那么就对Min和POS这两个变量进行一个更新
也就是赋值的一个过程
那么把Min更新为现在的这个花色
不考虑花色的这张牌的一个数值大小
cards模上100
position更新为当前这张牌的位置i
那我这个循环 中间不会有break
一定要把这个循环13项都做完
这样出来的时候才是总体的一个最小值
到这里我们这个求最小值的程序也就写完了
整理一下我们刚才这两种 不管是取特定的值
还是去找满足特定条件的元素
基本的思想都还是枚举法
比较的次数和总元素的个数实际上是成一个线性的关系
成正比的一个关系
所以我们一般称这种查找的方法为线性查找法
那么大家可以想象一下 当这个元素的个数成百上千的时候
我有成百上千次的循环 还可以很快的执行
但是如果我的问题经常需要从上亿条的记录当中进行查找
那线性查找法就显得特别慢了
那么我们是不是需要一种更快的查找的方式
其实有同学在刚才演示的过程中已经有所感觉了
我在从手中的扑克当中找牌的时候
大家玩扑克的经验也知道
如果我把手里的牌做一个整理
找特定的一张牌 不管是找黑桃Q
还是找比7大的一张最小的牌
都会比较容易的进行寻找
所以我们下面实际上就是假设我们手里这些牌如果有顺序
那怎么进行查找的方法
-1.1 基础知识
-1.2 买菜问题
-1.3 数学运算
-1.4 补充说明
-1.5 总结
--1.5 总结
-程设论道
--程设论道
-师生问答
-第一章 编程初步--语法自测
-2.1 关于超级计算器的几点思考
-2.2 电子秤模拟 — 背景介绍及需求分析
-2.3 电子秤模拟 — 代码实现
-2.4 变量定义与变量类型
-2.5 猜数游戏与数据表示
-2.6 关于变量的讨论
--公告
-2.7 变量体现的计算思维
-程设论道
--程设论道
-师生问答
--师生问答
-第二章 变量与代数思维--语法自测
-3.1 谁做的好事——语义表示
-3.2 谁做的好事——真假检查
-3.3 谁做的好事——循环枚举
-3.4 谁是嫌疑犯——多重循环枚举
-3.5 谁是嫌疑犯——破案线索表示
-3.6 谁是嫌疑犯——用二进制枚举
-程设论道
--程设论道一
--程设论道二
--程设论道三
-师生问答
-第三章 逻辑推理与枚举解题--语法自测
-4.1 插花游戏
-4.2 筛法
-4.3 线性查找
-4.4 折半查找
--4.4.1 提问
-4.5 排序问题
-4.6 总结
--4.6.1 总结
-程设论道
--程设论道二:筛法
-师生问答
-第四章 筛法与查找--语法自测
-5.1 阶乘
-5.2 排序
-5.3 矩阵填充
-5.4 分书与八皇后
-5.5 青蛙过河
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答一
--师生问答二
-第五章 分治思想与递归--语法自测
-6.1 兔子数列问题
-6.2 分鱼问题
-6.3 橱窗的插花问题
-6.4 最长公共子序列问题
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答
-第六章 递推与动态规划--语法自测
-7.1 统计记录总数
-7.2 统计活跃用户数
-7.3 统计在线时长
--7.3.2 结构
-7.4 总结
--7.4.1 总结
-程设论道
--程设论道
-师生问答
--师生问答
-第七章 文本数据处理--语法自测
-8.1 将数据组织成链表
-8.2 提高链表访问效率 —— 哈希链表
-8.3 以二进制文件存储链表
-程设论道
--程设论道一
--程设论道二
-师生问答
--师生问答
-第八章 非文本数据处理--语法自测
-9.1 自动售卖程序
-9.2 配制水果信息
-9.3 指定界面语言
-程设论道
--程设论道
-师生问答
--师生问答
-第九章 可配置的程序设计--语法自测