MATLAB 算法排序算法(如下)。

小夏 科技 更新 2024-02-27

这次MATLAB算法的主题是排序算法(下图),参考资料和分类方法基本都是网络上第一,比如维基百科、CSDN等。 会附上原理部分,上面也会有**,便于直观理解,就不多说了。

1.插入排序。

.直接插入:

由于 MATLAB 中的向量长度不确定,因此写出的 ** 看起来很简单。 但实际上,插入排序要复杂得多。

由于二进制搜索在MATLAB的语法中没有找到使**简洁的技巧,因此直接被内置的向量操作所取代。

步骤:

1. 将 a[2] 与 a[1] 进行比较,如果 a[2] 较大,则跳到下一步; 如果 a[1] 较大,则将 a[2] 放在 a[1] 之前。

2. 将 a[3] 与 a[2] 进行比较,如果 a[3] 更大,则跳到下一步; 将 a[3] 与 a[1] 进行比较,如果 a[3] 较大,则在 a[1] 和 a[2] 之间插入 a[3]; 如果 a[1] 较大,则将 a[3] 放在 a[1] 之前。

3. 将 a[4] 与 a[3] 进行比较,如果 a[4] 更大,则跳到下一步; 将 a[4] 与 a[2] 进行比较,如果 a[4] 较大,则在 a[2] 和 a[3] 之间插入 a[4]; 如果 a[2] 较大,则将 a[4] 与 a[1] 进行比较,如果 a[4] 较大,则在 a[1] 和 a[2] 之间插入 a[4]; 如果 a[1] 较大,则将 a[4] 放在 a[1] 之前。

在遍历所有元素之前,排序完成。

例:

数组 a=[4 2 5 3 1]。

1. 将 4 与 2 进行比较,得到 a=[2 4 5 3 1]。

2. 将 5 与 4 进行比较,得到 a=[2 4 5 3 1]。

3. 比较 3 与 5、3<5、3 与 4、3<4、33 与 2、3>2,得到 a=[2 3 4 5 1]。

4. 比较 1 与 5、1<5、1 与 4、1<4、1 与 3、1<3、1 与 2、1<2,得到 a=[1 2 3 4 5] 完成。

2.山体排序:

Hill Sort 算法以其设计者 Donald Shell 的名字命名,于 1959 年发布,是 Insert Sort 的更高效、更改进的版本。 它不会一次做一个。 取而代之的是,初始选择大步幅(较大增量)间隔比较,使记录跳到接近其排序位置; 然后增量缩小; 最终增量为1,大大减少了记录的移动次数,提高了分拣效率。 Hill 排序对增量序列的选择没有严格的规则。 ”

与合并排序类似:

步骤:

1.取整数 d,将所有模数为 d 的记录视为一个组,并在每个组内插入和排序。

2.d = floor(d 2),按 d 重新组合以对插入物进行排序。

3.如果 d = 1,则重复步骤 2。

其他排序:1.鸡尾酒分拣

也就是说,略微变形的气泡分拣版本,效率更高。 可视化将非常有趣。

步骤:

已知数组 A 有 n 个元素。

1. 比较 a(1) 和 a(2),如果 a(1) > a(2),则将两者互换。 (将较大的移到后面)。

2、至a(2)、a(3); a(3)、a(4)..a(n-1) 和 a(n) 来比较整个未排序的数组。 (将最大的数字排在最后)。

3. 比较 a(n-1) 和 a(n-2),如果 a(n-1)4, a(n-2) 和 a(n-3); a(n-3)、a(n-4)..a(2) 和 a(1) 来比较整个未排序的数组。 (将最小的数字排在最前面)。

5. 对删除有序数字的数组重复该操作。 直到排序完成。

例:

数组 a=[4 2 5 7 3 1 6]。

做一次:a=[2 4 5 3 1 6 7]。

做一次:a=[1 2 4 5 3 6 7]。

重复:a=[1 2 4 3 5 6 7]。

重复:a=[1 2 3 4 5 6 7]。

2.猴子分拣

根据无限猴子定理,现在中文维基百科的**被缩短并变得有序(xyx)。

步骤:

1.重新随机化原始数组。

2.如果数组未按升序或降序排序,请重复 1。

相似文章

    快速排序 高效的就地排序算法

    快速排序是一种常用的排序算法,它采用了分而治之的思想,与合并排序不同,快速排序是原位排序的,即不需要额外的空间来存储中间结果。在本文中,我们将了解快速排序的工作原理 工作原理以及它在对子数组进行排序时的作用。快速排序的算法步骤如下 哨兵分部 首先,我们需要选择一个基准编号作为哨兵。通常,我们选择数组...

    冒泡与选择是排序算法中的双重技巧

    答 冒泡排序和选择排序在排序逻辑 时间复杂度和空间复杂度方面存在显著差异。一 引言。在计算机科学领域,排序算法是一类非常重要的算法。无论您是使用数据库 搜索引擎还是数据分析,排序都是一项基本操作。在众多的排序算法中,气泡排序和选择排序无疑是最基本的两种。本文将详细解释这两种排序算法的原理以及它们之间...

    谈谈各种排序算法中使用的数学知识

    排序算法是计算机科学中的一个重要领域,用于按特定顺序排列一组数据。不同的排序算法可能使用不同的数学知识,但以下是一些常见的排序算法及其相关的数学概念 循环不变性 冒泡排序的工作原理是多次交换相邻元素的位置,在每个循环后,最大的元素被 冒泡 到序列的末尾。循环不变性是指在每个循环的开头保持一个条件为真...

    谷歌熊猫算法揭晓

    年,谷歌发布了一个重要的算法更新,即 熊猫算法 该算法的主要目的是解决搜索引擎中的一些内容质量问题,例如每页内容太少,内容与网页标题 关键字等元素的相关性低,原创性和建设性内容少。Panda 算法的工作原理是为每个网页分配一个所谓的质量得分,该得分用作排名因素。此质量得分主要受内容质量 原创性 用户...

    在AI时代,你如何看待“算法利维坦”?

    自年ChatGPT浪潮来袭以来,一直火爆,呈现出蓬勃发展的态势。AI 家居 医疗 教育 金融 公益 农业 艺术。AI真的走进了生活的方方面面,我们似乎已经进入了AI的时代,这是不可阻挡的。拥有如此高水平的人工智能,我不禁感受到了它背后的算法的力量。当技术发展得太快时,会带来很多思考,例如便利 焦虑和...