python 五大排序及代碼

冒泡排序

冒泡排序

# 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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章