Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 排序功能。解释 def my_排序(数组): 数组的长度=范围(1,len(数组)) 对于长度为_的_数组中的i: 值=数组[i] 最后一个_值=数组[i-1] 如果value_Python_Sorting_Python 2.7_Python 3.x - Fatal编程技术网

Python 排序功能。解释 def my_排序(数组): 数组的长度=范围(1,len(数组)) 对于长度为_的_数组中的i: 值=数组[i] 最后一个_值=数组[i-1] 如果value

Python 排序功能。解释 def my_排序(数组): 数组的长度=范围(1,len(数组)) 对于长度为_的_数组中的i: 值=数组[i] 最后一个_值=数组[i-1] 如果value,python,sorting,python-2.7,python-3.x,Python,Sorting,Python 2.7,Python 3.x,那么,我必须说,理解这一点的最好方法是对它进行实验,了解它在使用什么,基本上,还需要学习Python 但是,我将逐一介绍以下内容以帮助您: 定义一个名为my_sort的函数,该函数接受一个名为array的参数。其余的行包含在此函数中 使用从1inclusive到arraynon inclusive的长度创建一个数字范围。然后,将此范围指定给数组的变量length\u 开始在前一行中定义的范围内进行迭代。此外,将返回的每个数字分配给变量i。此for循环包含第4行到第9行 创建一个变量值,该变量等于

那么,我必须说,理解这一点的最好方法是对它进行实验,了解它在使用什么,基本上,还需要学习Python

但是,我将逐一介绍以下内容以帮助您:

  • 定义一个名为
    my_sort
    的函数,该函数接受一个名为
    array
    的参数。其余的行包含在此函数中

  • 使用从
    1
    inclusive到
    array
    non inclusive的长度创建一个数字范围。然后,将此范围指定给数组的变量
    length\u

  • 开始在前一行中定义的范围内进行迭代。此外,将返回的每个数字分配给变量
    i
    。此for循环包含第4行到第9行

  • 创建一个变量
    ,该变量等于
    数组
    i
    位置返回的项

  • 创建一个变量
    last_value
    ,该变量等于在
    i-1
    位置索引
    array
    返回的项

  • 测试
    是否小于
    最后一个值
    。如果是这样,运行第7行到第9行

  • 使
    数组的
    i
    索引等于
    last\u值

  • 使
    数组的
    i-1
    索引
    等于

  • 重新运行
    my_sort
    ,传入参数
    array

  • 为递归函数的此迭代返回
    数组

  • array
    最终排序时,递归将结束,剩下的
    array
    将是所有良好的排序


    我希望这能对这个问题有所帮助

    我看看能为你做些什么。守则,供参考:

    def my_sort(array):
        length_of_array = range(1, len(array))
        for i in length_of_array:
            value = array[i]
            last_value = array[i-1]
            if value<last_value:
                array[i]=last_value
                array[i-1]=value
                my_sort(array)
        return array
    
    我们所做的是使用
    范围
    间接遍历数组,因为每个数组中的项目总数相同。但是,如果我们仔细观察,
    value
    使用
    i
    作为索引,它从1开始,因此
    value
    实际上是数组[1],而
    last\u value
    array[1-1]
    array[0]

    for i in length_of_array:
        value = array[i]
        last_value = array[-1]
    
    所以我们递归地调用
    my_sort()
    。我们的基本意思是,如果在第一次迭代中出现错误,请更正它,然后将新的
    数组
    传递回
    my\u sort()
    。这听起来很奇怪,但它确实有效。如果
    如果
    测试根本不满意,那就意味着我们原始列表中的每一项都比下一项小,这是另一种方式(实际上是计算机的方式)表示它是按升序排序的。这是关键。因此,如果任何列表项比前面的项小,我们会将其向左移动一个索引。但我们真的不知道这是否正确——也许还需要更进一步。因此,我们必须回到开头(即,在我们新创建的列表中再次调用
    my_sort()
    ),然后重新检查是否应该再次向左拉。如果我们不能,则
    If
    测试将失败(每个项都比下一项小),直到它遇到下一个错误。在每一次迭代中,这会将相同的较小数字向左拖动一个索引,直到它位于正确的位置。这听起来比实际情况更令人困惑,所以让我们看看每个迭代的输出:

            my_sort(array)
    
    你看到发生什么事了吗?如果我们只看每次迭代中发生的变化,会怎么样:

    [3, 1, 3, 2, 6, 4]
    [1, 3, 3, 2, 6, 4]
    [1, 3, 2, 3, 6, 4]
    [1, 2, 3, 3, 6, 4]
    [1, 2, 3, 3, 4, 6]
    

    这使得函数可以根据需要从后面到前面调用自己的次数。同样,每次调用它时,它都会关注第一个错误的实例,将其向左拉一次,直到将其放置在正确的位置。希望有帮助!如果您仍有问题,请告诉我。

    这似乎只是一种不同形式的冒泡排序。Ref。
            my_sort(array)
    
    [3, 1, 3, 2, 6, 4]
    [1, 3, 3, 2, 6, 4]
    [1, 3, 2, 3, 6, 4]
    [1, 2, 3, 3, 6, 4]
    [1, 2, 3, 3, 4, 6]
    
    [3, 1, ...          # Wrong; swap. Further work ceases; recur (return to beginning with a fresh call to my_sort()).
    [1, 3, 3, 2, ...    # Wrong; swap. Further work ceases; recur
    [1, 3, 2, ...       # Wrong; swap. Further work ceases; recur
    [1, 2, 3, 3, 6, 4   # Wrong; swap. Further work ceases; recur
    [1, 2, 3, 3, 4, 6]  # All numbers all smaller than following number; correct.