Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 插入、选择、气泡排序分析与反演Robert Sedgewick < C++ > Robertsedwick在排序< < /p >中的算法_Algorithm_Sorting - Fatal编程技术网

Algorithm 插入、选择、气泡排序分析与反演Robert Sedgewick < C++ > Robertsedwick在排序< < /p >中的算法

Algorithm 插入、选择、气泡排序分析与反演Robert Sedgewick < C++ > Robertsedwick在排序< < /p >中的算法,algorithm,sorting,Algorithm,Sorting,属性1:插入排序和冒泡排序使用 对最多具有固定数量的文件进行比较和交换 每个元素对应的反演 在另一种类型的部分排序文件中,我们可能在排序文件中添加了一些元素,或者在排序文件中编辑了一些元素以更改它们的kesy。插入排序是处理此类文件的有效方法;气泡排序和选择排序不适用 属性2:插入排序使用线性数量的比较和 与atmost交换具有固定数量元素的文件 多于一个恒定数量的相应逆 我对上述属性的问题如下: 我无法得到属性1和属性2之间的差异?这里有人能给我解释一下吗 在上述属性2的基础上,作者提到插入排

属性1:插入排序和冒泡排序使用 对最多具有固定数量的文件进行比较和交换 每个元素对应的反演

在另一种类型的部分排序文件中,我们可能在排序文件中添加了一些元素,或者在排序文件中编辑了一些元素以更改它们的kesy。插入排序是处理此类文件的有效方法;气泡排序和选择排序不适用

属性2:插入排序使用线性数量的比较和 与atmost交换具有固定数量元素的文件 多于一个恒定数量的相应逆

我对上述属性的问题如下:

  • 我无法得到属性1和属性2之间的差异?这里有人能给我解释一下吗

  • 在上述属性2的基础上,作者提到插入排序是最好的,而不是冒泡排序和选择排序

  • 如果能举例说明就好了


    感谢您的时间和帮助

    因此,排序顺序为
    a[j]
    的反转

    • 财产1。考虑序列<代码> 2、1、4、3、6、5、8、7、10、9…< /代码>。每个元素相对于其左侧或右侧的相邻元素都是无序的,但相对于所有其他元素都是有序的。所以每个元素都有一个常量的倒数,在这种情况下是一个。该属性表示所有元素都可能有点无序

      冒泡排序和插入排序都将在线性时间内运行。冒泡排序只需要一个过程来更正顺序,因为它交换相邻元素,再通过另一个过程来确认。插入排序只需对每个元素执行一次比较和交换

    • 财产2。这种属性更强。除了能够让所有元素都有点无序外,现在还可以让一些元素非常无序。考虑与以前相同的顺序,但是最小的元素和最大的元素移动到相反的两端:<代码> n 2 4,3,6,5,8,7,10,9,1,< /代码>。现在,相对于所有其他元素,
      1
      n
      都是无序的

      插入排序仍将以线性时间执行。与以前一样,大多数元素只需要一些比较和交换,但也有一些元素可以按顺序进行比较和交换。在本例中,第一个
      n-1
      元素进行了几次比较和交换(好的,因此
      2
      只进行一次),最后一个
      n-1
      比较和交换--
      2*(n-1)+1*(n-1)
      是顺序
      n

      在本例中,冒泡排序的难度要大得多。每次通过只能向后移动
      1
      一步。因此,至少需要
      (n-1)
      过程,其中
      (n-1)
      比较在完成之前完成——这是乘法
      (n-1)*(n-1)
      是顺序
      n^2
      。(也可以反向运行气泡排序,在这种情况下,开始处最大的元素将缓慢移动到另一端。)


    因此,排序顺序为
    a[j]

    • 财产1。考虑序列<代码> 2、1、4、3、6、5、8、7、10、9…< /代码>。每个元素相对于其左侧或右侧的相邻元素都是无序的,但相对于所有其他元素都是有序的。所以每个元素都有一个常量的倒数,在这种情况下是一个。该属性表示所有元素都可能有点无序

      冒泡排序和插入排序都将在线性时间内运行。冒泡排序只需要一个过程来更正顺序,因为它交换相邻元素,再通过另一个过程来确认。插入排序只需对每个元素执行一次比较和交换

    • 财产2。这种属性更强。除了能够让所有元素都有点无序外,现在还可以让一些元素非常无序。考虑与以前相同的顺序,但是最小的元素和最大的元素移动到相反的两端:<代码> n 2 4,3,6,5,8,7,10,9,1,< /代码>。现在,相对于所有其他元素,
      1
      n
      都是无序的

      插入排序仍将以线性时间执行。与以前一样,大多数元素只需要一些比较和交换,但也有一些元素可以按顺序进行比较和交换。在本例中,第一个
      n-1
      元素进行了几次比较和交换(好的,因此
      2
      只进行一次),最后一个
      n-1
      比较和交换--
      2*(n-1)+1*(n-1)
      是顺序
      n

      在本例中,冒泡排序的难度要大得多。每次通过只能向后移动
      1
      一步。因此,至少需要
      (n-1)
      过程,其中
      (n-1)
      比较在完成之前完成——这是乘法
      (n-1)*(n-1)
      是顺序
      n^2
      。(也可以反向运行气泡排序,在这种情况下,开始处最大的元素将缓慢移动到另一端。)