排序算法(1)

l = [4,2,5,3,9,8,1]
print(l)
#冒泡排序
#冒泡排序的时间复杂度为O(n^2)。
'''
for i in range(1,len(l)):
    for j in range(len(l)-i):
        if l[j]>l[j+1]:
            l[j],l[j+1] = l[j+1],l[j]
'''
#选择排序
#选择排序的时间复杂度为O(n^2)
'''
for i in range(len(l)):
    for j in range(i+1,len(l)):
        if l[i] > l[j]:
            l[i],l[j] = l[j],l[i]
'''
#插入排序法
#简单插入排序的时间复杂度也是O(n^2)。
'''
for i in range(1,len(l)):
    for j in range(i):
        if l[i] < l[j]:
            l.insert(j,l.pop(i))
'''
#快速排序法
#快速排序是不稳定的,其时间平均时间复杂度是O(nlgn)。
'''
def quickSort(arr,firstIndex,lastIndex):
    if firstIndex<lastIndex:
        divIndex=partition(arr,firstIndex,lastIndex)
 
        quickSort(arr,firstIndex,divIndex)       
        quickSort(arr,divIndex+1,lastIndex)
    else:
        return
 
 
def partition(arr,firstIndex,lastIndex):
    i=firstIndex-1
    for j in range(firstIndex,lastIndex):
        if arr[j]<=arr[lastIndex]:
            i=i+1
            arr[i],arr[j]=arr[j],arr[i]
    arr[i+1],arr[lastIndex]=arr[lastIndex],arr[i+1]
    return i
quickSort(l,0,len(l)-1)
'''

 

posted @ 2018-08-21 15:14  夜尽天已明  阅读(156)  评论(0编辑  收藏  举报