数学算法组合与排序

news2025/1/13 15:53:45

一句话总结:组合得次序是否重要,是否可重复,决定了组合数量

一、什么是组合&排序

组合可以是现实的一切事物、例如 [衣服,鞋子,眼镜...] 等等,

也可以表示一组数字 [1, 2, 3, 4, 5] ,从个人的使用角度来说,更多的意义代表的是数字,因此下面都会以数字作为案例。

排序是组合的一部分,只是在数学中需要根据’次序‘来区分开称呼。

二、组合&排序与次序的关系

组合与排序的叫法在数学中是有区分的,组合指的是不强调次序,而排序则强调次序

例如有一组由 123这三个数字构成的数组,它的组合数量如下

[123, 132, 213, 231, 321, 312]

假如现在要找出每组数组只要包含 123 就算符合要求,那么对于这个数组来说,里面的每一组都是符合,这种叫做不强调次序,组合数量会增多

假如要求每组数字必须包含 123 且顺序相同 对于这个数组来说只有第一组符合,

这种叫做强调次序,组合数量会减少

三、组合&排序与是否可重复的关系

组合除了考虑到次序问题,还要考虑到是否可重复的问题,

例如有一组由 123这三个数字构成的数组

[123, 132, 213, 231, 321, 312]

仔细发现,这里的数组遵循着不可重复的特点,可以看到每组数字只能出现一次,

现在再来理解这类 123所构成的数组就清晰了

[
    111, 112, 113
    121, 122, 123,
    131, 132, 133
    211, 212, 213,
    221, 222, 223,
    231, 232, 233,
    311, 312, 313,
    321, 322, 323,
    331, 332, 333
]

这类的数组则遵循着可重复的特点。

我们还注意到,对于’可重复‘的组合明显比’不可重复‘的组合数量要多的多;

目前来讲,123这三个数组的组合数量看起来能接受,那如果是 1234567 的组合数量呢?

想必你也不想去手动算一遍,那可太麻烦了。

别急,现在你已经掌握了什么是’次序‘与’是否可重‘这两个重要概念,这已经足够了,下面是根据这两大特点对应的组合数量公式,公式的具体推导过程就不赘述了,可以参考网上资料;

三、排序(次序重要)

  1. 可重复

公式:

说明:n 代表组合内的个数,r 代表要提取的组合数量

举例:在 {1,2,3} 中这三个数字中取2个数字作为组合,代入公式得:

共有9组,不放心的话,我们也可以自己手写一遍:

[11, 12, 13, 21, 22, 23, 31, 32, 33]

算了下,确实有9组。

  1. 不可重复

公式:

说明:! 符号表示递归乘积,例如 4! = 4x3x2x1

例子:在 {1,2,3} 中这三个数字中取2个数字作为组合,代入公式得:

=

共有6组

四、组合(次序不重要)

  1. 可重复

公式:

说明: 强调了次序不重要,因此要乘以它来进行降组合数量

例子:在{1, 2, 3} 这三个数字中取2个数组作为组合,代入公式的:

= = = = 6

共有6组,不放心的话,我们也可以自己手写一遍:

[11, 12, 13, 22, 23, 33]

算了下,确实有6组。

  1. 不可重复

公式:

例子:在{1, 2, 3} 这三个数字中取2个数组作为组合,代入公式的:

= = = 3

共有3组,不放心的话,我们也可以自己手写一遍:

[12, 13, 23]

算了下,确实只有3组

注意:组合不强调次序,因此像 [21, 31, 32] 与上面是等价的,因此不计。

五、生活中的案例

  1. 彩票(不强调次序&不可重复)

玩过彩票的人都知道,只要你购买的号码出现在开奖结果里面时,就算中奖。

这里强调了次序不重要,每个数字都是独立的,也强调了不可重复性质。

  1. 沙拉搭配(不强调次序&可重复)

比如沙拉食物有{香蕉,西瓜,蔬菜,鸡蛋, 鸡胸肉}

假设现在你是消费用户,只能在这5种沙拉任选3样,每种食物都可以重复点,通过这种模式的组合,

强调次序不重要,但可重复的性质。

  1. 密码锁(强调次序&可重复)

行李箱密码锁就强调了次序的重要性,总不可能设置 123 时,输入个 321 还算对吧~

这里的可重复性质也是必要的,增加了密码的复杂度,即增加组合数量。

  1. 排名(强调次序&不可重复)

假设有5个人,其中任选3个作为123的排名,问有多少组合?

这里强调了次序重要,也强调了不可重复的性质。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/560588.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STL常用容器_2

目录 一、stcak容器(栈容器) 1、基本概念 2、常用接口 二、queue容器(队列容器) 1、基本概念 2、常用接口函数 三、list容器(链表) 1、基本概念 2、构造函数 3、赋值与交换 4、大小操作 5、插入…

网络层和数据链路层

目录 网络层 IP协议 基本概念 协议头格式 ​编辑 网段划分 特殊的IP地址 IP地址的数量限制 私有IP地址和公网IP地址 路由 ​编辑数据链路层 以太网 以太网帧格式 认识MAC地址 对比理解MAC地址和IP地址 认识MTU MTU对IP协议的影响 ​编辑 MTU对UDP协议的影响 …

新产品上线前需要准备哪些产品文档呢

新产品上线前需要准备的产品文档非常重要,不仅有助于产品的开发过程中沟通和协作,而且对于后期的维护和升级也起到十分重要的作用。下面详细介绍新产品上线前需要准备哪些产品文档。 一、市场需求文档 市场需求文档(Market Requirement Doc…

保姆级JAVA对接ChatGPT教程 使用 openai-gpt3-java

1. 前言 必须要有chatGTP 账号,如果需要测试账号可以关注公众号 疯狂的野猿 如果有chatGTP 账号就直接往下看。还需要一台外网服务器使用 nginx 代理来访问chatGTP 如果都没有,可以关注公众号联系作者。 还有笔者已经对接完成了,需要源码的关…

(电脑硬件)台式机主板音频端口功能详解

当你想给你的主机插上音响或者耳机时,你会发现主板上有6个接口,同样都是3.5mm接口,你知道该插哪个吗? 一般情况下,后置输入输出端口面板中,大多数的主板音频部分是彩色的。这一类颜色跟功能基本是固定的。当…

竟然支持在流程图、架构图中添加数学公式,安利一款纯免费的画图工具,真不错!

1. 简介 考虑到在绘图中需要添加数学表达式的场景,PDDON提供了LaTeX表达式编辑能力,可以在任何可以编辑的组件上启用LaTeX功能,使用LaTeX语法编写数学公式即可。 LaTeX表达式简介: LaTeX(LATEX,音译“拉泰赫…

【偏门技巧】C语言编程实现对IPV4地址的合法性判断(使用正则表达式)

C语言编程实现对IPV4地址的合法性判断(使用正则表达式) 有了解过我的朋友,可能有点印象,我在N年前的博客中,就写了这个主题,当时确实是工作中遇到了这个问题。本想着等工作搞完之后,就把这个问题…

C++小知识点(for,nullptr)

🌹作者:云小逸 📝个人主页:云小逸的主页 📝Github:云小逸的Github 🤟motto:要敢于一个人默默的面对自己,强大自己才是核心。不要等到什么都没有了,才下定决心去做。种一颗树,最好的时间是十年前…

Ubuntu用户与用户组相关操作

目录 一、用户与用户组信息查看 二、用户管理 1、user1 2、user2 3、设置密码与删除用户 三、用户组管理 四、用户的切换 一、用户与用户组信息查看 查看用户,首先调出终端窗口,(“sudo cat /etc/passwd”),输…

Day 50 小结

50.1 比较分析各种查找算法 顺序查找:时间复杂度:O(n);可用于有序或无序数据;按顺序查找元素。 折半查找:时间复杂度:O(logn);只能用于有序数据;从中间元素开始查找,每…

Linux 内核启动流程与入口函数分析

从启动引导程序 bootloader(uboot)跳转到 Linux 内核后,Linux 内核开始启动,今天我们分析一下 Linux 内核启动入口。 跳转过去初始化肯定是在汇编文件中,根据架构可以选择不同的平台,这里看一下链接汇编文…

STM32 Simulink 自动代码生成电机控制——记录一次电机初始位置检测及NS极的判断实验

目录 前言 基本原理 仿真实现 代码生成及开发板验证 前言 之前做了脉振高频注入的仿真到代码生成开发板运行的实验,电机可以通过高频注入计算出角度,但是在初始位置检测的时候,尝试了不少方法但是效果一般,很容易反转&#xff…

服务器模型 setsockopt 网络超时检测 广播组播和unix域套接字 5.23

四.服务器模型 1.循环服务器 TCP服务器 TCP服务器端运行后等待客户端的连接请求。 TCP服务器接受一个客户端的连接后开始处理,完成了客户的所有请求后断开连接。 TCP循环服务器一次只能处理一个客户端的请求。 只有在当前客户的所有请求都完成后,服务…

Lucene(6):分词器

1 分词理解 在对Document中的内容进行索引之前,需要使用分词器进行分词 ,分词的目的是为了搜索。分词的主要过程就是先分词后过滤。 分词:采集到的数据会存储到document对象的Field域中,分词就是将Document中Field的value值切分…

netty学习第一课

技术主题 Netty是一个基于Java NIO(非阻塞 I/O)框架的网络编程框架。它提供了一系列的高级网络编程API,使得开发者可以非常容易地实现高性能、高可靠性的网络应用。Netty具有非常好的可扩展性和灵活性,能够很好地支持多种协议和数…

Fiddler抓包工具之fiddler的介绍及安装

Fiddler简介 Fiddler是比较好用的web代理调试工具之一,它能记录并检查所有客户端与服务端的HTTP/HTTPS请求,能够设置断点,篡改及伪造Request/Response的数据,修改hosts,限制网速,http请求性能统计&#xff…

从零实现一个数据库(DataBase) Go语言实现版 7.空闲列表: 重用页

英文源地址 由于我们的B树时不可变的, 每次对kv存储的更新都会在路径上创建新节点, 而不是更新当前节点, 从而使一些节点无法从最新版本访问到.我们需要从旧版本中重用这些不可访问的节点, 否则, 数据库文件将无限增长. 设计空闲列表 为了重用这些页, 我们将添加一个持久化存…

python处理字符串、文本实例及注释

1、多个界定符切割字符串 代码 line = asdf fjdk; afed, fjek,asdf, foo import re re.split(r[;,\s]\s*, line) 结果 在上面的例子中,分隔符可以是逗号,分号或者是空格,并且后面紧跟着任意个的空格。只要这个模式被找到,那么匹配的分隔符两边的实体都会被当成是结果中…

面了个20k的自动化测试,从腾讯出来的果然都有两把刷子···

现在找个会自动化测试的人真是难呀,10个里面有8个写了会自动化,但一问就是三不知 公司前段时间缺人,也面了不少测试,前面一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在15-20k,面试的…

技巧:如何查看github的热门趋势和star排行

目录 1. 查看github的热门趋势2. 查看github的star排行3. 如何查看项目star增长曲线 1. 查看github的热门趋势 手动找到入口,打开github,登录后,找到Explore并点击进入,找到Trending切换,列出的就是github当天所有语言…