基本排序算法(pyhton实现)

来源:互联网 发布:印刷自动拼版软件 编辑:程序博客网 时间:2024/05/16 12:31

基本原理:
通过比较,使序列按照相应关键字按照递增或递减关系排列

排序的两种基本操作
1. 比较两个关键字的大小
2. 将记录从一个位置移动大另一个位置

三种基本排序算法
1.直接插入排序

L = [2,33,44,22,11,223,3]for i in range(0,int(len(L))):    e = L[i]    j = i    while j>0:        if L[j-1]>e:            L[j] = L[j-1]        else:            break        j=j-1    L[j] = eprint L

2.冒泡排序(交换类)

L = [2,33,44,22,11,223,3]for i in range(0,int(len(L))):    for j in range(0,int(len(L))-1-i) :        if L[j] >L[j+1]:            L[j],L[j+1] = L[j+1],L[j]print L

3.简单选择排序

L = [2,33,44,22,11,223,3]for i in range(0,int(len(L))):    cur_min = i    for j in range(i+1,int(len(L))) :        if L[j] < L[cur_min] :            cur_min = j    L[i],L[cur_min] = L[cur_min],L[i]print L   

三种基本排序算法的简单比较

算法 冒泡 选择 插入 时间复杂度 O(n^2) O(n^2) O(n^2) 最好情况 O(n) O(n^2) O(n) 最坏情况 O(n^2) O(n^2) O(n^2)

快速排序

def quickSort(L, low, high):    i = low     j = high    if i >= j:        return L    key = L[i]    while i < j:        while i < j and L[j] >= key:            j = j-1                                                                     L[i] = L[j]        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 LL = [2,33,44,22,11,223,3]S = []S = quickSort(L,0,int(len(L))-1)
0 0