冒泡排序的两种写法:
//第一种:在一轮比较的过程中,将序列中最大的数放在序列的最后
def bubble_sort(lists):
count = len(lists)
if lists == None:
return
if count == 1:
pass
for i in range(count):
for j in range(count-1-i):
if lists[j]>lists[j+1]:
lists[j],lists[j+1] = lists[j+1],lists[j]
lists = [67,23,97,23,12,34]
bubble_sort(list1)
print list1
//第二种:在一轮比较中将最小的数放在序列的最前面
def bubble_sort(lists):
count = len(lists)
for i in range(count):
for j in range(i+1,count):
if lists[i] > lists[j]:
lists[i],lists[j] = lists[j],lists[i]
list1 = [67,23,97,23,12,34]
bubble_sort(list1)
print list1
插入排序:
def insertSort(lists):
if lists == None:
return
count = len(lists)
if count == 1:
pass
for i in range(1,count):
temp = lists[i]
for j in range(i):
if lists[j] > lists[i]:
for k in range(i,j-1):
lists[k] = lists[k-1]
lists[j] = temp
list1 =[2,5,8,34,10,90]
insertSort(list1)
print list1
快排
#快排 最优时间复杂度为O(nlog(n)) 最坏时间复杂度为O(n^2)
def quick_sort(alist,first,last):
if first>=last:
return
mid_value = alist[first]
low = first
high = last
while low<high:
#high 左移
while low<high and alist[high] >= mid_value:
high -= 1
alist[low] = alist[high]
while low<high and alist[low] < mid_value:
low += 1
alist[high] = alist[low]
alist[low] = mid_value
#对low左边的列表进行快速排序
quick_sort(alist,first,low-1)
#对high右边的列表进行快速排序
quick_sort(alist,low+1,last)
if __name__=="__main__":
li = [54,26,93,17,77,31,44,55,20]
print(li)
quick_sort(li,0,len(li)-1)
print(li)
#归并排序 最优时间复杂度为O(nlog(n)),最坏时间复杂度为O(nlog(n)) 稳定
def merge_sort(alist):
n = len(alist)
if n <= 1:
return alist
mid = n//2
left_li = merge_sort(alist[:mid])
right_li = merge_sort(alist[mid:])
#merge(left,right)
left_pointer,right_pointer = 0,0
result = []
while left_pointer < len(left_li) and right_pointer < len(right_li):
if left_li[left_pointer] <= right_li[right_pointer]:
result.append(left_li[left_pointer])
left_pointer += 1
else:
result.append(right_li[right_pointer])
right_pointer += 1
result += left_li[left_pointer:]
result += right_li[right_pointer:]
return result
if __name__=="__main__":
li = [23,765,12,567]
print(li)
sorted_li = merge_sort(li)
print(sorted_li)