用于 Gnome 排序的Python程序
算法步骤:
- 如果您位于数组的开头,则转到正确的元素(从 arr[0] 到 arr[1])。
- 如果当前数组元素大于或等于前一个数组元素,则向右走一步
if (arr[i] >= arr[i-1])
i++;
- 如果当前数组元素小于前一个数组元素,则交换这两个元素并向后退一步
if (arr[i] < arr[i-1])
{
swap(arr[i], arr[i-1]);
i--;
}
- 重复步骤 2) 和 3) 直到 'i' 到达数组的末尾(即 - 'n-1')
- 如果到达数组的末尾,则停止并对数组进行排序。
Python
# Python program to implement Gnome Sort
# A function to sort the given list using Gnome sort
def gnomeSort( arr, n):
index = 0
while index < n:
if index == 0:
index = index + 1
if arr[index] >= arr[index - 1]:
index = index + 1
else:
arr[index], arr[index-1] = arr[index-1], arr[index]
index = index - 1
return arr
# Driver Code
arr = [ 34, 2, 10, -9]
n = len(arr)
arr = gnomeSort(arr, n)
print "Sorted sequence after applying Gnome Sort :",
for i in arr:
print i,
# Contributed By Harshit Agrawal
输出
Sorted sequence after applying Gnome Sort : -9 2 10 34
请参阅有关 Gnome 排序的完整文章以获取更多详细信息!