地精排序:
#coding=utf-8
#地精排序 Gnome Sort
#时间复杂度O(n^2),最优复杂度O(n),平均时间复杂度O(n^2)
#先往前冒泡,一旦发生数交换就往回冒泡
def GnomeSort(L):
print L
i=0
while i<len(L):
if i==0 or L[i-1] <= L[i]:
i+=1
else:
L[i-1],L[i] = L[i],L[i-1]
i-=1
print L
if __name__ == '__main__':
L=[3,2,1,2,7,5]
GnomeSort(L)
'''
#输出:
[3, 2, 1, 2, 7, 5]
[2, 3, 1, 2, 7, 5]
[2, 1, 3, 2, 7, 5]
[1, 2, 3, 2, 7, 5]
[1, 2, 2, 3, 7, 5]
[1, 2, 2, 3, 5, 7]
>>>
'''
冒泡排序:
#coding=utf-8
#冒泡排序 Bubble sort复杂度O(n²)
def BubbleSort(L):
for j in range(0,len(L)):
for i in range(j+1,len(L)):
if L[i]<L[j]:
L[i],L[j]=L[j],L[i]
print L
L=[3,2,5,1,8]
BubbleSort(L)
'''
#输出:
[2, 3, 5, 1, 8]
[2, 3, 5, 1, 8]
[1, 3, 5, 2, 8]
[1, 3, 5, 2, 8]
[1, 3, 5, 2, 8]
[1, 2, 5, 3, 8]
[1, 2, 5, 3, 8]
[1, 2, 3, 5, 8]
[1, 2, 3, 5, 8]
[1, 2, 3, 5, 8]
>>>
'''