冒泡排序
# bubble sort
array = [2,34,52,13,56,12]
for a in range(len(array)):
for b in xrange(0,a):
if array[b] > array[b + 1] :
array[b] , array[b + 1] = array[b + 1] , array[b]
print array
选择排序
# selectSort
array = [2,34,52,13,56,12]
for i in range(len(array) - 1):
index = i
for j in range(i,len(array)):
if array[index] > array[j]:
index = j
array[i],array[index] = array[index],array[i]
print array
插入排序
# INSERT SORT
array = [2,34,52,13,56,12]
for i in range(1,len(array)):
key = array[i]
j = i - 1
while j >= 0:
if array[j] > key:
array[j + 1] = array[j]
array[j] = key
j -= 1
print array
归并排序
#!/usr/bin/env python
#-*-encoding:utf-8-*-
# merge sort
def merge_sort(array):
if len(array) <= 1:
return array
left = merge_sort(array[:len(array) / 2])
right = merge_sort(array[len(array)/2 : len(array)])
result = []
while len(left) > 0 and len(right) > 0:
if left[0] > right[0]:
result.append(right.pop(0))
else:
result.append(left.pop(0))
if (len(left) > 0):
result.extend(merge_sort(left))
else:
result.extend(merge_sort(right))
return result
def main():
array = [2,34,52,13,56,12]
print merge_sort(array)
if __name__ == '__main__':
main()
快速排序
#!/usr/bin/env python
#-*-encoding:utf-8-*-
# quick sort
def quicksort(array,left,right):
if left < right:
pivot_index = partition(array, left, right)
quicksort(array,left,pivot_index - 1)
quicksort(array,pivot_index + 1,right)
def partition(array, left, right):
pivot_index = left
pivot = array[left]
for i in range(left + 1,right + 1):
if array[i] < pivot:
# 如果此处索引的值小于基准值, 基准值的位置后移一位
# 并将后移一位的值和这个值交换, 让基准位置及之前的始终小于基准值
pivot_index += 1
if pivot_index != i:
array[pivot_index],array[i] = array[i],array[pivot_index]
# 将基准值移动到正确的位置
array[left], array[pivot_index] = array[pivot_index], array[left]
return pivot_index
def main():
array = [2,34,52,13,56,12]
quicksort(array, 0, len(array)-1)
print array
if __name__ == '__main__':
main()