以下介绍摘自算法设计(Anany Levitin)书。(后面从略)
选择排序:
扫描整个列表,找到最小的元素,然后和第一个元素交换,将最小元素放到它在有序表的最终位置上。然后从第二个元素开始扫描剩下的n-1个,做同样的操作。 not stable
python代码
#selection sort
def sort(A): #A is an array
n=len(A)
for i in range(n-1):
mini=i
for j in range(i+1,n):
if A[j]<A[mini] : mini=j
A[mini],A[i]=A[i],A[mini]
return A
冒泡排序:
比较数组中的相邻元素,如果它们是逆序的话就交换它们的位置,重复多次以后,最终,最大的元素会”沉到”最后的一个位置。第二遍操作将第二大的元素沉下去。重复做n-1次,数组就重新排好序了。 stable
python代码
#bubble sort
def sort(A):
n=len(A)
for i in range(n-1):
for j in range(n-1-i):
if A[j+1]<A[j] : A[j],A[j+1]=A[j+1],A[j]
return A