冒泡排序
def bubble_sort(alist):
for j in range(len(alist)-1,0,-1):
for i in range(j):
if alist[i]>alist[i+1]:
alist[i],alist[i+1]=alist[i+1],alist[i]
li= [9,0,4,5,1,7,8,3,6,2]
bubble_sort(li)
print(li)
结果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
选择排序
def selection_sort(alist):
n=len(alist)
for i in range(n-1):
min_index=i
for j in range(i+1,n):
if alist[j]<alist[min_index]:
min_index=j
if min_index !=i:
alist[i],alist[min_index] = alist[min_index],alist[i]
li= [9,0,4,5,1,7,8,3,6,2]
selection_sort(li)
print(li)
插入排序:
def insert_sort(alist):
for i in range(1,len(alist)):
for j in range(i,0,-1):
if alist[j]<alist[j-1]:
alist[j],alist[j-1]=alist[j-1],alist[j]
li= [9,0,4,5,1,7,8,3,6,2]
insert_sort(li)
print(li)
希尔排序:
def shell_sort(alist):
n=len(alist)
gap=n//2
while gap>0:
for i in range(gap,n):
j=i
while j>=gap and alist[j-gap]>alist[j]:#这里的等号不能少
alist[j-gap],alist[j]=alist[j],alist[j-gap]
j-=gap
gap=gap//2
alist=[9,0,4,5,1,7,8,3,6,2]
shell_sort(alist)
print(alist)
快速排序:
def quick_sort(alist,start,end):
if start>=end:
return
mid=alist[start]
low=start
high=end
while low < high:
while low<high and alist[high]>=mid:
high-=1
alist[low]=alist[high]
while low<high and alist[low]<mid:#上面有等号这里就没有等号
low+=1
alist[high]=alist[low]#注意赋值顺序
alist[low]=mid
quick_sort(alist,start,low-1)
quick_sort(alist, low+1,end)
alist=[9,0,4,5,1,7,8,3,6,2]
quick_sort(alist,0,len(alist)-1)
print(alist)
归并排序:
def merge_sort(alist):
if len(alist) <=1:
return alist
num = len(alist) //2
left = merge_sort(alist[:num])
right= merge_sort(alist[num:])
return merge(left,right)
def merge(left,right):
l,r=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 += left[l:]
result += right[r:]
return result
alist=[9,0,4,5,1,7,8,3,6,2]
sorted_alist = merge_sort(alist)
print(sorted_alist)
这篇博客介绍了几种常见的排序算法,包括冒泡排序、选择排序、插入排序、希尔排序、快速排序和归并排序,并展示了每种排序算法的应用结果。

17万+

被折叠的 条评论
为什么被折叠?



