循环排序的 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 程序