冒泡排序:
def bubble_sort(list):
for i in range(len(list)-1):
count = 0
for j in range(len(list)-1-i):
if list[j] > list[j+1]:
list[j],list[j+1] = list[j+1],list[j]
count += 1
if count == 0:
return list
return list
if __name__=="__main__":
list = [1,4,2,6,7]
list = bubble_sort(list)
print(list)
特点:
稳定的
最坏时间复杂度:O(n**2)
最好时间复杂度(原序列已经是排好序的):O(n)
选择排序:
def select_sort(list):
min_index = 0
for i in range(len(list)-1):
for j in range(i,len(list)):
if list[j] < list[min_index]:
min_index = j
list[min_index],list[i] = list[i],list[min_index]
min_index += 1
return list
if __name__=="__main__":
list = [8,4,2,6,7]
list = select_sort(list)
print(list)
特点:
不稳定的
最坏时间复杂度:O(n **2)
最好时间复杂度:O(n **2)
插入排序:
def insert_sort(list):
for i in range(1,len(list)):
while i > 0:
if list[i] < list[i-1]:
list[i],list[i-1] = list[i-1],list[i]
i -= 1
else:
break
return list
if __name__=="__main__":
list = [8,4,2,6,7]
list = insert_sort(list)
print(list)
特点:
稳定的
最坏时间复杂度:O(n**2)
最好时间复杂度:O(n)
希尔排序
def shell_sort(list):
gap = len(list) // 2
while gap >= 1:
for i in range(gap,len(list)):
while i > 0:
if list[i] < list[i-gap]:
list[i],list[i-gap] = list[i-gap],list[i]
i = i - gap
else:
break
gap = gap // 2
return list
if __name__=="__main__":
alist = [8,4,2,6,7]
alist = shell_sort(alist)
print(alist)
特点
最坏时间复杂度:O(n(logn)**2)
最好时间复杂度:O(n(logn)**2)
不稳定
快速排序:
def quick_sort(list,first,last):
while first >= last:
return list
mid_value = list[first]
high = last
low = first
while low < high:
while low < high and list[high] > mid_value:
high -= 1
list[low] = list[high]
while low < high and list[low] < mid_value:
low += 1
list[high] = list[low]
list[low] = mid_value
quick_sort(list,first,low-1)
quick_sort(list,low+1,last)
return list
if __name__=="__main__":
alist = [8,4,2,6,7]
alist = quick_sort(alist,0,4)
print(alist)
特点:
最坏时间复杂度:O(n**2)
最好时间复杂度:O(nlogn)
不稳定的