001.数据结构:

时间复杂度是程序运行的时间,也可以说是次数;
空间复杂度是程序占用的空间;

1.快速排序

随机选一个数,小左发左边,大的放右边。然后进行递归

001.数据结构:_第1张图片

Python递归

'''
quick sort
  L表示每一次递归后的数组 
  low表示开始位置
  high表示结束位置 
'''
def quickSort(L, low, high):
    i = low 
    j = high
    if i >= j:
        return L
    key = L[i]
    # 一次排序,i和j的值不断的靠拢,然后最终停止,结束一次排序
    while i < j:
        # 和最右边的比较,如果>=key,然后j-1,慢慢的和前一个值比较;如果值<key,那么就交换位置
        while i < j and L[j] >= key:
            j = j-1                                                             
        L[i] = L[j]
        # 交换位置后,然后在和最左边的值开始比较,如果<=key,然后i-1,慢慢的和后一个值比较;如果值>key,那么就交换位置
        while i < j and L[i] <= key:    
            i = i+1 
        L[j] = L[i]
    L[i] = key 
    quickSort(L, low, i-1)
    quickSort(L, j+1, high)
    return L

2.冒泡排序

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。

冒泡排序就是把小的元素往前调或者把大的元素往后调。
比较是相邻的两个元素比较,交换也发生在这两个元素之间。

def bubble(bubbleList):
    listLength = len(bubbleList)
    while listLength > 0:
        for i in range(listLength - 1):
            if bubbleList[i] > bubbleList[i+1]:
                bubbleList[i] = bubbleList[i] + bubbleList[i+1]
                bubbleList[i+1] = bubbleList[i] - bubbleList[i+1]
                bubbleList[i] = bubbleList[i] - bubbleList[i+1]
        listLength -= 1
    print bubbleList

if __name__ == '__main__':
    bubbleList = [3, 4, 1, 2, 5, 8, 0]
    bubble(bubbleList)

3.插入排序

001.数据结构:_第2张图片

而二分查找进行插入

4.希尔排序

001.数据结构:_第3张图片

001.数据结构:_第4张图片

5.选择排序

001.数据结构:_第5张图片

6.归并排序

001.数据结构:_第6张图片

# coding: utf-8

def MergeSort(lists):
    if len(lists) <= 1:
        return lists
    num = int( len(lists)/2 )
    # 从中间,进行数据的拆分, 递归的返回数据进行迭代排序
    left = MergeSort(lists[:num])
    right = MergeSort(lists[num:])
    print left
    print "*"*20
    print right
    print "_"*20
    return Merge(left, right)

def Merge(left,right):
    r, l=0, 0
    result=[]
    while l<len(left) and r<len(right):
        if left[l] < right[r]:
            result.append(left[l])
            l += 1
        else:
            result.append(right[r])
            r += 1
    result += right[r:]
    result += left[l:]
    print 'result:', result
    return result

print MergeSort([1, 2, 3, 4, 5, 6, 7, 90, 21, 23, 45])

7.堆排序

001.数据结构:_第7张图片

001.数据结构:_第8张图片

你可能感兴趣的:(001.数据结构:)