当前位置: 首页 > 知识库问答 >
问题:

我应该如何分析和或证明这个简单的排序算法?

毛宏达
2023-03-14
def modSwapSort(L): 
    """ L is a list on integers """
    print "Original L: ", L
    for i in range(len(L)):
        for j in range(len(L)):
            if L[j] < L[i]:
                # the next line is a short 
                # form for swap L[i] and L[j]
                L[j], L[i] = L[i], L[j] 
                print L
    print "Final L: ", L

共有1个答案

巫马英豪
2023-03-14

它是某种形式的选择排序。其复杂度为O(n^2)。在for范围内进行一些简单的优化可能会有所帮助。因为现在在每一个i-循环步骤中,它在j-循环中创建最小的元素,并将其放在第i个位置,第二个最小的元素将在position(i-1)中,以此类推。因此,在每一个步骤中,您的列表看起来像(i=3):

[A1,A2,A3,B1,B2]其中Ak

So shorty:在每一个ith步骤中,您查找索引大于i的最少元素,该元素将大于列表中的第一个元素。

 类似资料:
  • 我在这个家庭作业问题上有困难。我认为主要的困惑来自于没有找到一个反例的基础。 设, . . . , 是存储在磁盘上的程序,程序需要兆字节的存储空间,磁盘的容量为兆字节,其中小于兆字节存储空间之和 > (a)最大化磁盘上保存的程序数量。证明或给出一个反例:按照< code>Si递增的顺序选择程序的贪婪算法 (b) 尽可能多地使用磁盘的容量。证明或给出一个反例:贪婪算法,按照递减的顺序选择程序 编辑:

  • 使用,这很容易:

  • 本文向大家介绍C#排序算法的比较分析,包括了C#排序算法的比较分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了C#的各种排序算法。分享给大家供大家参考。具体分析如下: 首先通过图表比较不同排序算法的时间复杂度和稳定性。   排序方法 平均时间 最坏情况 最好情况 辅助空间 稳定性 直接插入排序 O(n2) O(n2) O(n) O(1) 是 冒泡排序 O(n2) O(n2) O(n)

  • 我正在用ReactJS重建我的投资组合,因为我正在学习这种新语言,我有一个问题。我应该只在没有内容需要更新的网站中使用状态或道具吗? 这是我的主课:

  • 我应该如何在Flex上做这个网格?如果我将给父级,那么底线将有很大的空格(中间有很大的空格,中间有空格),如果我删除并使用,我将在所有的右块,所有的行都有margy-right。 null null

  • 我应该如何在Flex上做这个网格?如果我将给父级,那么底线将有很大的空格(中间有很大的空格,中间有空格),如果我删除并使用,我将在所有的右块,所有的行都有margy-right。 null null