Stooge 排序的 Python 程序

pythonserver side programmingprogramming

在本文中,我们将了解下面给出的问题陈述的解决方案。

问题陈述 − 给定一个数组,我们需要使用 stooge 排序对其进行排序。

算法

1. 检查索引 0 处的值是否大于最后一个索引处的值,然后交换它们。
2. 对数组的初始 2/3 进行排序。
3. 对数组的最后 2/3 进行排序。
4. 再次对初始 2/3 进行排序以确认。

现在让我们观察下面实现中的解决方案 −

示例

def stoogesort(arr, l, h):
   if l >= h:
      return
   # 交换
   if arr[l]>arr[h]:
      t = arr[l]
      arr[l] = arr[h]
      arr[h] = t
   # 超过 2 个元素
   if h-l+1 > 2:
      t = (int)((h-l+1)/3)
      # 对前 2/3 个元素进行排序
      stoogesort(arr, l, (h-t))
      # 对后 2/3 个元素进行排序
      stoogesort(arr, l+t, (h))
      # 再次对前 2/3 个元素进行排序
      stoogesort(arr, l, (h-t))
# main
arr = [1,4,2,3,6,5,8,7]
n = len(arr)
stoogesort(arr, 0, n-1)
print ("排序后的序列为:")
for i in range(0, n):
   print(arr[i], end = " ")

输出

排序后的顺序为:
1 2 3 4 5 6 7 8

所有变量均在本地范围内声明,其引用如上图所示。

结论 −

在本文中,我们了解了如何为 Stooge Sort 编写 Python 程序


相关文章