首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在最坏的情况下,插入排序和选择排序期间进行多少次比较?

在最坏的情况下,插入排序和选择排序期间进行多少次比较?
EN

Stack Overflow用户
提问于 2021-11-10 12:26:51
回答 1查看 90关注 0票数 0

为了练习编码,我用Python编写了插入排序和选择排序。以下是插入排序:

代码语言:javascript
复制
def insertion(L, i):
    a = L[i + 1]
    for index in range(i + 1):
        if L[index] > a:
            break
    else:
        index = i + 1
    for k in range(i + 1, index, -1):
        L[k] = L[k - 1]
    L[index] = a
    return L
def insertion_sort(L):
    for i in range(len(L) - 1):
        L = insertion(L, i)
    return L

下面是选择的排序:

代码语言:javascript
复制
def selection_sort(L):
    for i in range(len(L) - 1):
        _min = i
        for j in range(i + 1, len(L)):
            if L[j] < L[_min]:
                _min = j
        L[_min], L[i] = L[i], L[_min]
    return L

然后,我使用N = 10000;L =i在范围(N,0,-1)中创建最坏的情况。在我看来,插入排序比选择排序快,因为选择的比较次数为49,995,000次,而插入次数仅为9999次。但当我用

代码语言:javascript
复制
import time
start = time.time()
……
end = time.time()

要测量时间,结果是插入排序比选择排序慢。我是否误解了比较的时代?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-13 20:51:53

你确实漏掉了一些东西。即使您没有比较插入排序中的更多内容,也可以遍历列表并更改第二个for循环中的所有值,因为index =0是

在(N,0,-1)范围内的j= L=j,因此时间复杂度也是O(n^2)。与选择排序相同。

然而,我不明白为什么它需要更多的时间比选择排序。这可能是因为您正在调用inside (insertion_sort中的函数),而且python使用的是额外的内存和时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69913257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档