Python 排序功能。解释 def my_排序(数组): 数组的长度=范围(1,len(数组)) 对于长度为_的_数组中的i: 值=数组[i] 最后一个_值=数组[i-1] 如果value
那么,我必须说,理解这一点的最好方法是对它进行实验,了解它在使用什么,基本上,还需要学习Python 但是,我将逐一介绍以下内容以帮助您: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行 创建一个变量值,该变量等于
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.