当前位置: 首页 > 知识库问答 >
问题:

插入排序与选择排序

巫马炫明
2023-03-14

我试图理解插入排序和选择排序之间的区别。

它们似乎都有两个组成部分:未排序列表和排序列表。它们似乎都从未排序列表中提取一个元素,并将其放在排序列表的适当位置。我看到一些网站/书籍说选择排序通过一次交换一个来实现这一点,而插入排序只是找到合适的位置并插入它。但是,我看到其他文章说了些什么,说插入排序也交换。因此,我感到困惑。有任何规范的来源吗?

共有2个答案

阎知
2023-03-14

插入排序和选择排序都有一个外部循环(在每个索引上)和一个内部循环(在索引的子集上)。内部循环的每一次循环都将排序区域扩展一个元素,以未排序区域为代价,直到耗尽未排序元素。

区别在于内部循环的功能

>

  • 在选择排序中,内部循环位于未排序的元素上。每个过程选择一个元素,并将其移动到最终位置(排序区域的当前endpoint)。

    在插入排序中,内部循环的每个过程都会在已排序的元素上迭代。已排序的元素将被替换,直到循环找到插入下一个未排序元素的正确位置。

    因此,在选择排序中,按输出顺序找到已排序的元素,并在找到它们后保持不变。相反,在插入排序中,未排序的元素保持不变,直到按输入顺序使用,而排序区域的元素则不断移动。

    就交换而言:选择排序在内部循环的每一次传递中执行一次交换。插入排序通常将要插入的元素保存为内部循环之前的temp,为内部循环将排序的元素向上移动一个,然后将temp复制到之后的插入点留出空间。

  • 公良英资
    2023-03-14

    选择排序的时间复杂度总是n(n-1)/2,而插入排序具有更好的时间复杂度,因为其最坏情况复杂度是n(n-1)/2。通常情况下,需要进行较小或相等的比较,然后n(n-1)/2

    资料来源:http://cheetahonfire.blogspot.com/2009/05/selection-sort-vs-insertion-sort.html

     类似资料:
    • 问题内容: 我使用整数对选择进行排序,并且可以正常工作,当我尝试修改程序以使用泛型时,编译器会抱怨并且我不知道如何解决它。如果有人能提出一些建议和建设性的意见,我将不胜感激。这是代码。 以下是吐出来的东西。 cannot be applied to given types; printArray(list); ^ required: E[] found: int[] reason: inferre

    • 本文向大家介绍选择排序,包括了选择排序的使用技巧和注意事项,需要的朋友参考一下 在选择排序技术中,列表分为两部分。一部分将所有元素排序,而另一部分将未排序项目。首先,我们从数组中获取最大或最小数据。获得数据(例如最小值)后,我们将列表中的第一位数据替换为最小数据,从而将其放置在列表的开头。执行后,数组变得越来越小。这样就完成了这种分类技术。 选择排序技术的复杂性 时间复杂度:O(n ^ 2) 空间

    • 选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。 1. 算法步骤 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。 重复第二步,直到所有元素均排序完毕。 2. 动图演示 3. JavaScript 代

    • 1. 前言 本节内容是排序算法系列之一:选择排序,主要讲解了选择排序的主体思路,选取了一个待排序的数字列表对选择排序算法进行了演示,给出了选择排序算法的 Java 代码实现,帮助大家可以更好的理解选择排序算法。 2. 什么是选择排序? 选择排序(Select Sort),是计算机科学与技术领域中较为简单的一种排序算法。 假设我们按照从小到大的顺序进行排序。选择排序会首先从待排序序列中选择一个最小的

    • 冒泡排序 from typing import List """ 核心思想是循环length-1次,每次循序找出最大或者最小的一个数,每次比较相邻的两个数,如果大或者小就交换位置,每一次循环可以比较当次最大的一个数。 例如 3, 10, -1, 20,8 - 第一次循环 1. 指针下移指向 3 3和10比较 不交换 3 10 -1 20 8 2. 指针下移指向 10 10>-1 交换

    • 本文向大家介绍插入排序,包括了插入排序的使用技巧和注意事项,需要的朋友参考一下 这种分类技术与卡片分类技术相似,换句话说,我们使用插入分类机制对卡片进行分类。对于这项技术,我们从数据集中拾取一个元素,并移动数据元素以放置一个位置,以便将拾取的元素插入回数据集中。 插入排序技术的复杂性 时间复杂度:最佳情况为O(n),平均情况和最差情况为O(n ^ 2) 空间复杂度:O(1) 输入输出 算法 输入-