各种排序基础
1.冒泡
思想:相邻两个元素进行比较,然后把较大的放在后面,一轮比较结束后,最大的元素被放在最后面。整个 过程就像鱼儿吐泡泡一样,两两进行比较,大的元素向后沉。
#冒泡排序
def bubble_sort(list):
for i in range(len(list)):
#i代表需要比较多少轮
for j in range(len(list)-i-1):
#j代表该轮需要比较的次数
if list[j]>list[j+1]:
tmp=list[j+1]
list[j+1]=list[j]
list[j]=tmp
return list
if __name__=='__main__':
list1=[3,2,8,6,7]
print(bubble_sort(list1))
总结:在比较过程中,相等的元素不会交换位置,所以是稳定排序。最好的时间复杂度是O(n),最坏的时间复杂度是O(n^2), 平均时间复杂度是O(n^2)
2.选择
思路:第一轮,每个元素都和第一个元素进行比较,如果比它小,则进行交换,找到整个序列中最小的元素。第二轮,则是每个元素都和第二个元素进行比较,如果比它小,则进行交换,找到整个序列中第二小的元素,以此类推。
#选择排序
def selection_sort(list):
for i in range(len(list)):
min_index=i
for j in range(i+1,len(list)):
if list[ min_index]>list[j]:
tmp