时间复杂度是程序运行的时间,也可以说是次数;
空间复杂度是程序占用的空间;
随机选一个数,小左发左边,大的放右边。然后进行递归
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
冒泡排序(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)
而二分查找进行插入
# 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])