循环排序 Python 程序


在本文中,我们将了解如何解决以下问题陈述。

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

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

现在让我们观察以下实施中的解决方案 -

例如

 在线演示

def cycleSort(array):
   writes = 0
   # cycles to be rotated
   for cycleStart in range(0, len(array) - 1):
      item = array[cycleStart]
      #position to place the item
      pos = cycleStart
      for i in range(cycleStart + 1, len(array)):
         if array[i] < item:
            pos += 1
      # if item exits, it is not a cycle
      if pos == cycleStart:
         continue
      # Otherwise, place the item
      while item == array[pos]:
         pos += 1
      array[pos], item = item, array[pos]
      writes += 1
      # rotation continued
      while pos != cycleStart:
         # Find a position to place the item
         pos = cycleStart
         for i in range(cycleStart + 1, len(array)):
            if array[i] < item:
               pos += 1
         # place the item
         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 程序

更新于: 2019 年 12 月 20 日

226 次浏览

开启您的 事业

完成课程并获得认证

立即开始
广告