自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

忆梦九洲的博客

我们都妄想吃掉太阳-

  • 博客(125)
  • 资源 (1)
  • 收藏
  • 关注

原创 KTV项目含数据库(+项目答辩)

Never点歌系统分为两个系统,登录:(选择管理员或用户,官网,查找密码,还可以切换2020版本就是换了一种布局),前台:用户歌主界面里包括:歌星点歌,字数点歌,拼音点歌,类别点歌,编号点歌,语种点歌,用户收藏,我的歌库,新歌速递,金曲排行,DISCO,关于我们,酒水,服务,喝彩。歌曲播放里:播放歌曲列表,重播,切歌 ,歌曲置顶,上移,下移,删除,清空等功能。后台管理员界面(修改用户信息,添加歌手,查询歌手,修改歌手信息,删除歌手信息,添加歌曲,查询歌曲,修改歌曲信息,删除歌曲信息,删除,修改,查询歌曲类别

2020-11-17 19:43:31 1286

原创 SpringBoot使用Jedis步骤

SpringBoot使用Jedis操作Redis步骤

2024-03-28 11:01:48 308 4

原创 数字的魅力之卓绝罕有的完美数

我们都知道,6是“溜”的谱音,用于表达人们对于超常能力的感叹。但许多人不知道的是,6也是罕有的完美数!所谓完美数,又称完全数或完备数,它的所有真因子(除了自身以外的约数)之和必须恰好等于它本身。612328124714完美数是一种极其特殊及罕有的自然数,目前仅仅发现了51个。而我们这一篇文章的任务正是输出 1000 以内的所有完美数。

2024-02-28 17:20:49 496

原创 极限与无穷之1.2的平方根约为1.414 213 56

我们深入探讨了无穷小数乘法的概念与含义,特别是关于1.999 999⋯等于2的问题。我们发现,对于无穷小数的乘法,我们可以通过逐步逼近的方法来寻找平方以1.999⋯开始的数值。这种方法可以通过选择一个足够接近2的有限小数作为起点,并逐步增加其位数来得到更接近2的数值。通过这种方式,我们可以找到满足条件的无穷小数。然而,在讨论中我们也遇到了一些挑战和困惑。其中一个挑战是如何解释无穷小数的加法和乘法,尤其是在涉及无穷多位的情况下。我们必须重新思考和定义这些运算,以确保它们符合数学规则。

2024-02-28 09:48:31 880

原创 极限与无穷

本系列通过探讨数学证明的形式化思想以及欧几里得几何的先驱,强调了数学证明的基础是从少数几条公理出发,经过演绎推导而得到的有趣的定理。然而,直到20世纪,人们才逐渐认识到这种思想可以应用于整个数学系统。其中一个主要的原因是数学中的无穷概念,它在数学中起着至关重要的作用,但却很难严格化。本系列将通过讨论三个涉及无穷的陈述,揭示了面对无穷所带来的困难,并探索了如何应对这些困难。在挑战无穷的过程中,数学家们不断寻求解决方案,以更好地理解和处理无穷的概念。

2024-02-19 22:04:42 386

原创 Java入门教程:介绍、优势、发展历史以及Hello World程序示例

Java是一种面向对象的编程语言,由Sun Microsystems公司于1995年推出。它具有许多优势,如简单性、面向对象、分布式、安全性、健壮性、可移植性、解释性、高性能、支持多线程和动态性。Java的发展历史可以追溯到1995年,当时推出了Java语言和JDK1.0。随后,Java在各个领域的应用不断扩大,发布了J2EE、J2SE和J2ME等版本。2004年发布的JavaSE 5.0是一个重要的里程碑,为Java语言带来了许多新特性。

2024-02-18 17:55:50 1299

原创 证明之三条看似显然实则需要证明的陈述

在较高等的数学中,有一些定理看上去非常显然,但实际上却需要深入的证明才能得到确认。这种情况常常让人感到费解,因为如果一个定理在脑子里立即就有证明,那才真正算是显然的。本文给出了三个例子来说明这一点。首先是算术基本定理,即每个自然数都可以唯一地被写为素数的乘积。尽管这个定理在较小的自然数中看起来很显然,但并没有简单的证明方法。例如,存在两组不同的素数乘积能够得到相同的结果,这引出了对于该定理的复杂证明。第二个例子是关于解开一个三叶结的问题。

2024-02-18 16:59:42 964

原创 数字的魅力之情有独钟的素数

素数(Prime number)也称为质数,是指在非0自然数中,除了1与其本身之外不拥有其他因数的自然数。

2024-02-15 22:38:59 1181

原创 证明之缺角正方形网格的铺地砖问题

缺角正方形网格的铺地砖问题是一个著名的数学难题。无论是八横八纵的方格还是用其他尺寸的方格,都无法用多米诺骨牌形状的地砖完全覆盖剩余部分。通过类比国际象棋的棋盘,我们可以利用颜色交错的方格来证明无法覆盖剩余的小方格。这个问题的解析展示了数学证明的美妙之处,其中包括意外的思想、引人入胜的推理和待探索的暗示。这种美妙的证明过程使我们对数学的思维方式和探索过程产生了更深入的理解。无论是数学、音乐、绘画还是诗歌,每种形式都有其独特的美,而数学证明中的美妙之处也展现了数学的独特之美。

2024-02-15 11:34:05 896

原创 小结与数字的魅力的开篇

通过本系列的学习,我们深入了解了各种排序算法,并了解了它们的思路、时间复杂度和空间复杂度。尽管排序算法本身并不难,但涉及的知识点却广泛而复杂,需要我们不断思考和练习。在接下来的学习中,我们将进一步探索算法的实际应用。通过以实例为基础的讲解,我们将学会使用算法解决实际问题,让学习变得更加有趣且具有实用性。下一个系列以“数字的魅力”为主题,将围绕数字展开讲解。数字作为数学的基础,是想象和灵感的来源,是建立在公理和逻辑上的有趣事实的集合。虽然数字只是简单的符号,但它们构成了一个美妙的“通天塔”,让人陶醉其中。

2024-02-14 21:06:24 938

原创 证明之毕达哥拉斯定理

在毕达哥拉斯定理中,我们探讨了直角三角形的性质。这一定理指出,对于一个直角三角形,其两个直角边的平方和等于斜边的平方。这个定理有许多不同的证明方法,其中一种特别简洁且易于理解。通过观察两幅图形,我们可以发现一个有趣的现象。在两个等面积的正方形中,分别标记为A、B、C,它们的边长分别为a、b、c,对应的面积分别为a2b2c2a2b2c2。由于四个三角形的移动并不改变面积,也不使它们重叠,所以在两幅图中,去掉四个小三角形所得的面积应该是相同的。然而,在左图中,这个面积是a2b。

2024-02-14 20:38:56 890

原创 线性时间非比较类排序之基数排序

基数排序是桶排序的扩展,因此又称“桶子法”,它是通过键值的部分信息,将要排序的元素分配至某些“桶”中,以达到排序的作用。

2024-02-12 20:56:48 760

原创 证明之圆的分割

通过观察和推理圆的分割图形,我们探索了连接圆上点的直线所分割出的区域总数的规律。我们最初试图以翻倍的方式推断区域数量的增长,但在实际计算中发现了一个例外情况。进一步思考后,我们发现了交点的数量是一个更准确的指标。通过计算不同桩子组合的方式,我们得出了交点总数与区域数量的关系。这个关系揭示了区域数量不可能像直觉所认为的那样翻倍增长,而是与桩子组合的方式和交点数目相关。这个认识让我们警醒地意识到在数学证明中,我们需要小心论证,不能只凭直觉。

2024-02-12 18:36:33 970

原创 证明之黄金分割比的无理性

黄金分割比是一种具有神奇性质的数值,它在几何形状和数学运算中展现了其存在与无理性。通过视觉化证明和几何操作的比较,我们可以理解黄金分割比的存在。从切割矩形的过程中,我们可以观察到黄金分割比的形成和不断重复,而对于其他边长比例,这个过程会终止。这些证明揭示了黄金分割比的特殊性质,并展示了数学的魅力和深奥之处。黄金分割比作为一种无理数,一直吸引着数学家和非数学家的兴趣,展现了数学中丰富的思维和推理过程。

2024-02-10 11:26:41 989

原创 证明之根号2的无理性

数学中使用的证明方法之一是反证法,它通过假设要证明的结论为假来推导出矛盾,从而证明结论的正确性。反证法的有效性建立在数学归纳法原理的基础上,该原理要求证明第一条陈述为真,并且每一条陈述都蕴含下一条,从而保证所有正整数的陈述都为真。数学中的证明过程可以通过将每一步细分为更小的子步骤,逐步推导出结论。其他数学家可以通过理解和检查证明的子步骤来确认其正确性。数学的独特性在于其解决争论的原则和公理的接受。数学家们通常认为公理是显然合理的,并且关注公理的自治性和有用性,而不是其真实性。

2024-02-08 17:52:06 1059

原创 线性时间非比较类排序之桶排序

桶排序也叫箱排序,1956年便开始使用,它可以算是计数排序的一个改进版本。

2024-02-08 14:05:11 1478

原创 线性时间非比较类排序之计数排序

计数排序由 HaroldH.Seward 于1954年提出,它是一种非基于比较的排序算法,通过辅助数组来确定各元素的最终位置。因为在排序过程中不存在元素之间的比较和交换操作,所以当待排序数组为整数且数组内数据的范围较小时,其优势是十分明显的。

2024-02-07 14:42:09 1022

原创 数学里的证明

通过对圆上点连线的区域分割规律与数学序列关系的探究,我们发现了一个有趣的现象:每添加一个新的点,圆的区域个数会加倍,即每个圆的区域数可以表示为2的n-1次方,其中n为圆上点的个数。虽然我们一开始使用了“似乎”这样的词语,但数学家并不满足于这样的表述,而是追求证明,即能够消除一切疑点的论证。历史上有许多论断被认为是毋庸置疑的,但后来被证明是错误的,包括一些数学定理。然而,当今数学中的定理具有更高的可靠性,因为它们经过了严格的证明。在后续的文章中,我们给出了几个证明的例子,并从中总结出了一些一般性的结论。

2024-02-07 13:19:03 462

原创 十大排序算法之线性时间非比较类排序

线性时间比较类排序算法具有高效的执行效率和较低的时间复杂度,适用于处理大规模数据集的排序任务。它们以空间换时间的策略,在一定的限制和要求下,能够快速有效地完成排序操作。然而,需要根据待排序数据的特点来选择合适的算法,以充分发挥线性时间比较类排序算法的优势。

2024-02-05 21:55:33 991

原创 数与抽象之把负数和分数放到指数上

抽象方法在数学中的应用是十分重要的,特别是在解释指数和对数运算中的特殊情况时。通过抽象方法,我们可以将熟悉的概念扩展到不熟悉的情况下,并赋予其新的意义。在指数运算中,通过基本规则E1和E2,我们可以推导出已知的结果,并且可以处理特殊情况如负指数和分数指数。同样地,在对数运算中,通过规则L1L2和L3,我们可以解释对数的性质和比较大小。抽象方法的优越性在于它让我们放松对概念的具体理解,而是专注于应用抽象的规则和方法。当我们不再担心具体含义而放松地应用抽象方法时,这些概念的神秘性就会消失。

2024-02-05 18:05:28 946

原创 数与抽象之初探无穷大

抽象思维带来的愉悦与数学中的无穷大与虚数之间存在着一些有趣的对比。在数学中引入虚数i和无穷大的概念时,我们必须面对一些问题。虽然无穷大可以用来表示1除以0等情况,但这样做会导致一些不相容性,与算术定律不兼容。为了解决这个问题,我们可以扩充数系并接受新的系统中的算术定律,但通常人们更倾向于保持算术定律,不考虑无穷大。抽象思维和数学中的概念引入都有其独特的挑战,但它们也为我们提供了更深入理解和探索世界的机会。

2024-02-04 23:27:52 945

原创 十大排序算法之归并排序

归并排序是包含归并思想的排序方法,它是分治法(Divide and Conquer)的一个典型应用。所谓分治,即将问题“分”(Divide)为更小的问题进行递归求解,再将得到的各个递归结果合并在一起,达到“治”(Conquer)问题的目的,也称“分而治之”。“分”的阶段可一分为二、一分为三⋯⋯,据此我们也将归并排序分为二路归并、三路归并⋯,此处以二路归并为例进行讲解。

2024-02-04 23:19:15 707

原创 数与抽象之实数和复数

这和一个著名的哲学难题有相似之处。你对红色所产生的感受与我对绿色产生的感受(交换亦可)有没有可能是相同的呢?一些哲学家很严肃地思考这个问题,并定义“感受性”一词来表示我们所拥有的绝对的内在体验,比如我们对色彩的体验。而另一些人并不相信感受性。在他们看来,“绿色”这样的词有更抽象的定义,那就是根据它在语言系统中所发挥的作用,也就是说,根据它与“草地”、“红色”等概念之间的关系。因此,就这个论题,要想从人们淡论色彩的方式来推断出他们的态度是不可能的,除非在哲学争论当中。

2024-02-04 19:52:26 965

原创 十大排序算法之堆排序

在简单选择排序文章中,简单选择排序这个“铁憨憨”只顾着自己做比较,并没有将对比较结果进行保存,因此只能一遍遍地重复相同的比较操作,降低了效率。针对这样的操作,Robertw.Floyd 在1964年提出了简单选择排序的升级版——堆排序方法。堆是什么呢?堆是用数组实现的已标号的完全二叉树。

2024-02-03 23:42:43 1048

原创 数与抽象之负数和分数

在数学中,减法和除法相对于加法和乘法更具挑战性。然而,通过引入抽象的数学模型,我们可以更好地理解和解释减法和除法的概念。减法可以通过解方程的方式来理解,即找出与给定数相加得到零的数。类似地,除法可以通过解方程的方式来理解,即找出与给定数相乘得到另一个给定数的数。然而,向孩子们解释减法和除法的困难之一是它们并不总是可行的操作,例如从较小的数中减去较大的数,或将一定数量的物品平均分给不等数量的人。为了解决这个问题,我们引入了负数和分数这两个概念,将它们视为数学运算的工具。

2024-02-02 21:41:19 948

原创 十大排序算法之简单选择排序

选择类排序的思想很简单,每次从待排序数据中选择最小的一个放到最前面,直到把所有数据都遍历完,简单选择持排序和直接插入排序一样,“直男”一个,做事踏实、认真,有条有理,但总让人觉得有些死板。

2024-02-02 17:17:42 394

原创 数与抽象之零

数字0在数学中的概念和性质引发了人们的思考和推导。从抽象的角度来看,0被定义为加法单位元,并且满足特殊的性质A3:对任意数a,有0+a=a。通过推导和运用其他规则,我们可以得出0乘以任何数都等于0的性质。然而,从非抽象的角度出发,对于0乘以某个数的意义会引发疑问,但通过从基本规则中推导出来,可以解决这个问题。证明过程可能会显得冗长,但抽象的方法在数学思维中起着重要作用,不仅忽略具体意义,而是依靠简单的规则来证明数学陈述。将实际意义与抽象思维结合固然有用,但在新的不熟悉的情况下,抽象方法是必不可少的。

2024-02-01 22:17:52 936

原创 十大排序算法之希尔排序

希尔(音同 Shell)排序,也叫缩小增量排序,它通过将原始列表分解多个子列表来改进插入排序。虽然它叫希尔排序,但和命令解析器 Shell 不是一回事,只是因为该算法是由 D.L.shell 提出的而已。

2024-02-01 20:38:45 1014

原创 数与抽象之自然数

为什么上述几步看起来是如此地天经地义呢?比方说,为什么我们会不假思索地相信30× 200=6000?330的定义是3×10,200的定义是2×(10X10),所以我们可以充分相信30X200=(3×10) × (2X(10X10))。但为什么是6000呢?在数学中,自然数是最基本的数学对象,它们具有一种内在的属性,例如纯粹的"五性",可以通过对数字的观察进行提炼。然而,随着数字变得更大,纯粹性减少,我们开始关注数字之间的关联和它们在数系中的作用。数字与算术规则紧密相连,数系由数字和算术规则共同构成。

2024-01-31 22:46:23 932

原创 十大排序算法之直接插入排序

前面文章已经讲完了交换类排序,接下来开始学习插入类排序。顾名思义,所谓插入排序指我们会为每一个数据安排一个适合它的位置并将其插入,直到所有数据就位则排序完成。直接插入法便是插入排序的典型方法,完全继承了插入排序的“脾气”:简单、粗暴,逮到就插入,毫无技术可言,耿直得可爱。

2024-01-31 22:20:10 970

原创 数与抽象之没有棋子的象棋

这段对话讨论了将象棋或类似游戏抽象为图论模型的可能性。通过图的顶点来表示游戏的可能局面,并通过边表示合乎规则的棋步,可以探讨棋局和必胜策略。尽管这种图论模型在现实中的局面数量庞大,难以应用,但从游戏和象棋的等价性来看,它仍然是一个完美的模型。有趣的是,在定义这个模型时,并没有涉及关于棋子的任何信息。因此,黑色国王是否存在的问题变得离奇,因为棋盘和棋子只是为了组织这个巨大图中的顶点和边而采用的一种原则。当我们说"黑色国王被将军了"时,这只是一种简化的说法,意味着两位棋手达到了图中众多顶点之一。

2024-01-30 17:51:38 370

原创 十大排序算法之快速排序

快速排序也称为分区交换排序,它采用的是分治思想,是冒泡排序的改良版。冒泡排序需要进行比较并交换的次数较多,因为它是在两个相邻数据之间进行比较并交换的操作,每次只能移动一个位置,而快速排序是在两个分区之间进行比较并交换的操作。

2024-01-29 22:55:09 1002

原创 十大排序算法之冒泡排序

冒泡排序是最基础的排序算法之一,但它并不是最优的排序算法。

2024-01-28 23:45:29 1196

原创 十大排序算法之非线性时间比较类排序

接下来就开始我们的算法学习之路了,代码会分别使用Java与Python来实现,数据处理的算法很多,排序是最基础且最重要的一类,大多数人都是通过学习排序算法入门的。接下来让我们一起学习闻名遐迩的十大排序算法,它们分别是冒泡排序、快速排序、直接插入排序、希尔排序、简单选择排序、堆排序、归并排序、计数排序、桶排序和基数排序。这十大排序算法可以大致为两类:非线性时间比较类排序和线性时间非比较类排序,如下图所示。所谓线性时间并不是“按照时间顺序讲述故事”的方式,而是与时间复杂度相关的词条。

2024-01-28 23:03:35 456

原创 数与抽象之抽象方法

这一系列对话涉及了数学的抽象方法、数的存在问题以及语言哲学的关联。首先,我们看到开篇引用了一个论证,试图通过简单的算术式来论证数的存在性。然而,这个论证在数学家眼中并不被当作一个问题,因为他们默认数就是存在的,而不认为这是一个需要解决的问题。接着,我们将注意力转向国际象棋中的棋子存在问题。与数学中的论证不同,这个论证被认为是荒谬的,因为棋子的存在与其物理形态无关,而是与游戏规则和功能相关。最后,我们涉及到数学的抽象方法与语言哲学的关联。

2024-01-27 22:16:05 447

原创 数据结构总结

这里再补充一点:树和图都有更高阶的“玩法”,那就是加权——为每条路径加上权值,然后就变为加权树和加权图了。最后我们对数据结构做一个总结,如下图所示。数据结构系列的文章从基本数据类型到数据结构,涵盖整型、布尔值、字符串、列表、元组、字典、集合、堆、栈、链表、树和图,以及队列和环等相关内容。读者一定要理清各存储结构的异同之处和它们之间的关联,这样也算没有辜负作者的良苦用心了。

2024-01-27 17:57:05 489

原创 模型之“抽象”一词的不同含义

在数学中,抽象有着多重含义。首先,抽象是指从具体问题中提取出关键特征,忽略不必要的细节。通过这种方式,我们可以建立简化的数学模型来研究问题。其次,抽象还指处理的对象不是具体的实体,而是一种概念或数学结构。例如,在图论中,我们将现实世界的不同实体抽象为图中的顶点和边。这种抽象的数学模型具有可塑性,可以应用于多种不同的领域和问题。在图论中,我们可以完全忽略顶点代表的具体对象是什么,而专注于顶点之间的关系和连接。这种纯粹抽象的方法使得数学研究者能够探索图论的理论,而不受限于特定的应用背景。

2024-01-26 21:35:58 472

原创 数据结构之图

图(Graph)是比树还要难以理解和学习的“多对多”数据结构,可以认为树也是图的一种。图的知识点众多,按照存储路径的方向分,可分为无向图和有向图,按照图的存储结构分,可分为完全图与有向完全图、连通图与强连通图、连通分量与强连通分量、无环图与有向无环图,其涉及的算法则包括克鲁斯卡尔算法、普里姆算法、迪杰斯特拉算法和弗洛伊德算法等。如下图所示为图的分类。

2024-01-26 18:17:47 1274

原创 模型之地图染色与时间表制定

地图染色问题和时间表制定问题在数学观点上可以统一为图论中的顶点分组问题。无论是为地图的不相邻区域选取颜色,还是为课程安排时间表,我们都需要将对象(区域或课程)赋予特定属性(颜色或时间),并确保相邻的对象不具有相同的属性。通过将问题转化为图的形式,我们可以用顶点和边来表示对象和对象之间的关系。我们的目标是将顶点分成尽可能少的组,使得每组中不存在由同一条边相连的顶点。这种统一模型的好处是,我们可以利用图论的相关算法和技巧来解决这类问题。同时,通过简化模型,我们可以更广泛地应用同一套方法,研究不同领域的现象。

2024-01-25 22:36:33 484

原创 数据结构之树

前面文章讲的线性表,不论数组还是链,都是“一对一”的关系,本文章节让我们来认识一下“一对多”关系的数据结构——树(Tree)。树结构分为二叉树和三叉树等,如下图所示。常用的就是二叉树,因此本节以二叉树为主要介绍对象,二叉树之外的树结构暂且统称为非二叉树。树在数据结构中占据重要的地位。对于树结构的学习其实不难,先了解它的概念和性质,然后结合图示去理解,最后亲自动手实现其功能,按照这样的思路去学习,一定可以轻松掌握。注意:一棵树的度,是树内各节点的度的最大值。

2024-01-25 12:23:19 1238

使用Java与Python十大排序算法之直接插入排序

直接插入排序 前面文章已经讲完了交换类排序,接下来开始学习插入类排序。顾名思义,所谓插入排序指我们会为每一个数据安排一个适合它的位置并将其插入,直到所有数据就位则排序完成。 直接插入法便是插入排序的典型方法,完全继承了插入排序的“脾气”:简单、粗暴,逮到就插入,毫无技术可言,耿直得可爱。 1. 算法思想 将待排序数组中的记录逐一插入已排序的子序列中,从而得到一个完整的有序数组。 2. 算法步骤 (1)将数组的第一个数据看成一个有序的子序列。 (2)从第二个数据开始,依次与前面的有序子序列进行比较,若待插入数据 array[i]大于或等于array[i-1] ,则原位插入:若待插入数据 array[i]小于数据 array[i-1],则将数据array[i]临时存放在哨兵t emp中,将有序序列中大于哨兵的所有数据后移一位,然后将哨兵数据插入相应位置。 (3)重复步骤(2),直到整个数组变成有序数组。 3. 算法分析 也许有的读者看得有点糊涂了。为了便于理解,我们将步骤进行拆分讲解。假设我们要给数组[3,1,8,2,1,5]进行排序,由于有两个1,所以将第二个1标记为“1*”,排序

2024-01-31

使用Java与Python实现十大排序算法之快速排序

1. 算法思想 选取一个基准值,将待排序数据分为左(小于基准值)右(大于基准值)两个区间,然后对两个分区的数据进行同样的循环操作,最后便可得到一组有序数据。 2. 算法步骤 选取待排序数据的第一个数值作为分区标准。 遍历数组,将小于标准数的数据移到左边,将大于标准数的数据移到右边,则中间为标准数。 对标准数左右两个子序列分别进行(1)和(2)步的操作。 当左右子序列的长度均小于或等于1时,排序完成。 3. 算法分析 如果选取的标准数为待排序数组的中位数,即每次划分后的左右子序列长度基本一致,则时间复杂度为 $O(nlog_2n)$,为最好的情况。 如果待排序数组是逆序,第一趟选取的标准数为待排序数组的最大值,经过 n-1 次比较和移动后,得到一个n-1个元素的左子序列;第二趟选取的标准数依旧是待排序子序列的最大值,经过n-2次比较和移动后,得到一个n-2个元素的左子序列。以此类推,则总操作次数为: $$C_{max}=\sum_{i = 1}^{n-1}{(n-i)}=\frac{n(n-1)}{2}\approx n^2$$ 这是最坏的情况。因此快速排序的平均时间复杂度为$O(n^

2024-01-29

使用Java与Python实现的十大排序算法之冒泡排序

使用Java与Python代码实现分别实现的冒泡排序 冒泡排序是最基础的排序算法之一,但它并不是最优的排序算法。 1. 算法思想 冒泡排序是将数据中的每个数与相邻数进行比较并交换,大数往上冒,小数往下沉,每个数都遍历一次后便可以排出顺序。 2. 算法步骤 (1)取数据中的第一个数,依次与下一个数进行比较,然后与小于(或大于)自己的数交换位置直到最后一个数,这个过程称为“冒泡”。 (2)如果未发生位置交换,则说明数据有序,排序结束;如果发生了位置交换,则重复步骤(1) ———————————————— 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/Wtzink/article/details/135902464

2024-01-29

使用Python写的学生管理系统

使用Python基础写一个基于控制台的学生管理平台,里面功能分别是:1.录入学生信息2.查找学生信息3.删除学生信息4.修改学生信息5.排序6.统计学生总人数7.显示所有学生信息,要求数据存储在文件里。

2024-01-07

快速教你springboot如何使用图形验证码的两种方式

今天给大家展示的是springboot使用图形验证码的两种方式,第一种基于hutool来实现,第二种方式基于axet实现。现在我们来谈一谈为什么要学习验证码 防止恶意攻击:验证码是一种常用的安全措施,它可以有效地防止恶意攻击,如暴力破解、恶意注册、恶意登录等。通过要求用户输入验证码,可以降低被机器人或恶意程序攻击的风险,因此验证码验证也是人机验证的方式之一。

2023-09-21

Java面试真题(没用你砍我)

面试题库是作为帮助同学们准备面试的辅助资料,但是绝对不能作为备考唯一途径,因为面试是考验真实水平的,不是背会登案就可以的,而是需要您透彻理解的.

2021-01-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除