m0_71692131 2024-08-12 17:47 采纳率: 0%
浏览 13

插入排序为什么不可以是上面这个

下面是比较正式的代码,上面是我自己写的一个算法,但是为什么上面的不可以正常使用而下面的可以使用,希望各位佬们可以为我画一个流程图,并且说一下不可以使用的原因(图片的注释标反了)

img

  • 写回答

2条回答 默认 最新

  • 檀越@新空间 2024-08-12 17:48
    关注

    下午好🌅🌅🌅
    本答案参考ChatGPT-3.5

    插入排序的基本思想是在未排序序列中找到适当的位置,将元素插入序列的正确位置。以下是插入排序的一种实现方式:

    def insertion_sort(arr):
        for i in range(1, len(arr)):
            key = arr[i]
            j = i-1
    
            # Move elements of arr[0..i-1], that are greater than key,
            while j >=0 and key < arr[j] :
                    arr[j+1] = arr[j]
                    j -= 1
    
            arr[j+1] = key
    
    # Test the function
    arr = [12, 11, 13, 5, 6]
    insertion_sort(arr)
    print ("Sorted array is ")
    for i in range(len(arr)):
        print ("%d" % arr[i])
    

    从上文中的代码可以看出,插入排序的时间复杂度为O(n^2),因为需要遍历整个数组来查找合适的位置来插入元素。

    至于为何上面的插入排序不能正常工作,可能有以下原因:

    1. 在实际应用中,我们通常会比较大的数据集,并不期望它们立即被完全排序。
    2. 插入排序对原始数据有一定的要求,即数组必须是已经排序或者部分排序的。
    3. 当数据量较小时,插入排序的效率可能会比其他更高效的数据结构如快速排序或归并排序更高。

    为了避免这些问题,我们可以选择更高效的排序算法,例如快速排序、归并排序等。也可以根据实际需求调整我们的数据存储方式。

    评论

报告相同问题?

问题事件

  • 修改了问题 8月12日
  • 创建了问题 8月12日