Algorithm 这是选择排序还是插入排序?

Algorithm 这是选择排序还是插入排序?,algorithm,sorting,Algorithm,Sorting,假设我们使用某种二次排序算法对一个由十个整数组成的数组进行排序。在算法主循环的四次迭代之后,数组元素的顺序如下所示: 1234506789 哪种说法是正确的?注意:我们的选择排序首先选择最大的项目。 A.算法可以是选择排序或插入排序。 B.算法可能是selectionsort,但不能是insertionsort。 C.算法可能是insertionsort,但不能是selectionsort。 D.该算法既不是selectionsort,也不是insertionsort 我认为答案应该是插入排序和

假设我们使用某种二次排序算法对一个由十个整数组成的数组进行排序。在算法主循环的四次迭代之后,数组元素的顺序如下所示:

1234506789

哪种说法是正确的?注意:我们的选择排序首先选择最大的项目。 A.算法可以是选择排序或插入排序。 B.算法可能是selectionsort,但不能是insertionsort。 C.算法可能是insertionsort,但不能是selectionsort。 D.该算法既不是selectionsort,也不是insertionsort

我认为答案应该是插入排序和选择排序?但我在一些网站上发现正确答案是C。我不知道原因。有人能给我解释一下吗。如果我错了,请纠正我


源:

插入排序是可能的,因为当前快照刚刚完成从索引0到4的数组排序


选择排序将首先选择示例中的最小值0,并将其置于左端。所以答案是C。

这个输出可能用于最大的第一选择排序

它不能是最小的第一选择排序,因为选择排序保持不变,即在n次迭代之后,列表中的前n个项目完全排序。因此,如果这是一个选择排序,那么在第一次迭代中将值为0的元素排序为索引0。因此,列表看起来像0 1 2 3。。。在前4次迭代之后

最大第一插入排序和最小第一插入排序都可以输出,因为插入排序具有不同的不变量。在插入排序中,经过n次迭代后,列表中的前n个项目最后n个(对于最大的第一次排序)将相对彼此进行排序,但它们不一定位于列表中的最终位置


对于最小的第一次插入排序,经过4次迭代后,可能会看到不合适的0,因为排序的迭代次数还不足以将0重新定位到正确的索引中。

这可能是最大的第一次选择排序或插入排序的输出。如果数组最初看起来是这样的,经过4次算法迭代后,它仍然是这样的。它不可能是最小的第一选择排序,因为经过4次迭代之后,数组的前4项将是0 1 2 3。

根据我的回答,答案是C。 *

最小元素为0,如果使用选择排序,则它应该是最左边的元素,因为整个数组中第一次通过的最小值中的选择排序应该为[0]。 插入排序是可能的,因为在插入排序中,我们选择元素并将当前元素与其左侧的元素进行比较,直到当前元素位于正确的排序位置。我想说的是: *

*
因此,插入排序是可能的,因为它已完成排序,直到第四次通过

由于此选择排序以最大的项目开始,因此完全排序的段实际上会从列表的后面开始增长。您是正确的。我在阅读问题时忽略了这个细节。那么,我们的选择排序首先选择最大项目的行的含义是什么?我认为这意味着问题中推测的选择排序从列表中最大的项目开始排序,从最高索引到最低索引。也就是说,它从9开始向后排序数组。由于此选择排序从最大的项目开始,它实际上会从选择9开始,并将其放在右端。当你说在线来源声明答案为C时,可能这些来源不包括我们的选择排序首先选择最大项目的行。没有这条线,答案是C;有了它,答案是A。我发现了和Note相同的问题。所有来源给出相同的答案。
Selection sort-
    for(int x=0; x<n; x++){
        int index_of_min = x;
        for(int y=x; y<n; y++){
            if(array[index_of_min]>array[y]){
                index_of_min = y;
            }
        }
        int temp = array[x];
        array[x] = array[index_of_min];
        array[index_of_min] = temp;
    }
1 2 3 4 5 0 6 7 8 9
> Here is an example: for sorting the array the array 52314  First, 2 is
> inserted before 5, resulting in 25314 Then,  3 is inserted between 2
> and 5, resulting in 23514 Next, one is inserted at the start, 12354
> Finally, 4 is inserted between 3 and 5, 12345.