循环排序的 Python 程序

pythonserver side programmingprogramming

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

问题陈述− 我们有一个数组,我们需要使用循环排序的概念对其进行排序。

这是一种就地算法,交换通过形成循环进行。

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

示例

def cycleSort(array):
   writes = 0
   # 要旋转的循环
   for cycleStart in range(0, len(array) - 1):
      item = array[cycleStart]
      #放置项目的位置
      pos = cycleStart
      for i in range(cycleStart + 1, len(array)):
         if array[i] < item:
            pos += 1
      # 如果 item 退出,则它不是循环
      if pos == cycleStart:
         continue
      # 否则,放置项目
      while item == array[pos]:
         pos += 1
      array[pos], item = item, array[pos]
      writes += 1
      # 继续旋转
      while pos != cycleStart:
         # 找到放置项目的位置
         pos = cycleStart
           for i in range(cycleStart + 1, len(array)):
            if array[i] < item:
               pos += 1
         # 放置项目
         while item == array[pos]:
            pos += 1
         array[pos], item = item, array[pos]
         writes += 1
   return writes
# main
arr = [1,5,3,4,8,6,3,4,5]
n = len(arr)
cycleSort(arr)
print("Sorted array is : ")
for i in range(0, n) :
   print(arr[i], end = " ")

输出

Sorted array is :
1 3 3 4 4 5 5 6 8

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

结论

在本文中,我们了解了如何编写用于循环排序的 Python 程序


相关文章