📅  最后修改于: 2020-12-10 03:50:56             🧑  作者: Mango
选择排序通过对每次通过失败仅进行一次交换来增强气泡排序。为此,选择排序将在通过时搜索最大值,并在完成通过后将其放置在最大可能的区域中。类似地,与气泡排序一样,在第一遍之后,最大的项目在正确的位置。在第二遍之后,将设置以下最大值。由于必须在第(n-1)次通过之后设置最后一个项目,因此该过程将继续进行,并要求n-1进行n个项目的排序。
1. k ← length [A]
2. for j ←1 to n-1
3. smallest ← j
4. for I ← j + 1 to k
5. if A [i] < A [ smallest]
6. then smallest ← i
7. exchange (A [j], A [smallest])
A [] =(7,4,3,6,5)。 A [] =
第一次迭代:
设定最小值= 7
由于a > 0 > a 1 ,请设置最小值= 4。
如a 1 > a 2 ,设置最小值= 3。
因为a 2 3 ,将最小值设置为3。
如a 2 4 ,则将最小值设为3。
由于3是最小的元素,因此我们将交换0和2 。
第二次迭代:
设定最小值= 4
如a 1 2 ,设置最小值= 4。
As,A [1]
同样, 1 4 ,设置最小值= 4。 由于最小值已经放置在正确的位置,因此不会进行交换。 第3次迭代: 设定最小值= 7 如a 2 > a 3 ,设置最小值= 6。 如a 3 > a 4 ,设置最小值= 5。 由于5是剩余的未排序元素中最小的元素,因此我们将交换7和5。 第4次迭代: 设定最小值= 6 当3 4时,将最小值设置为6。 由于最小值已经放置在正确的位置,因此不会进行交换。 输入:给定n个输入元素。 输出:对列表进行排序的步骤数。 逻辑:如果给我们n个元素,则在第一遍中将进行n-1个比较;在第二遍,它将执行n-2 ;在第三遍中,它将执行n-3 ,依此类推。因此,可以通过以下方式找到比较的总数: 因此,选择排序算法包含O(n 2 )的时间复杂度和O(1)的空间复杂度,因为它需要一些额外的存储空间来交换临时变量。 在选择排序算法中,这三种情况下的时间复杂度均为O(n 2 )。这是因为在每个步骤中,我们都需要找到最少的元素,以便可以将其放置在正确的位置。一旦我们跟踪了完整的数组,我们将获得最小元素。
选择排序的复杂度分析
时间复杂度: