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