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

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

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

img

  • 写回答

2条回答 默认 最新

  • 关注

    下午好🌅🌅🌅
    本答案参考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日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?