def BubbleSort(alist):
n=len(alist)
for i in range(n):
for j in range(n-i-1):
if alist[j]>alist[j+1]:
alist[j],alist[j+1]=alist[j+1],alist[j]
if __name__ == '__main__':
list=[2,3,6,2,1,5,9,6,3,1]
BubbleSort(list)
print(list)
2.插入排序
方式一
def InserSort(alist):
n=len(alist)
for i in range(1,n):
j=i
while j>0:
if alist[j]<alist[j-1]:
alist[j],alist[j-1]=alist[j-1],alist[j]
j-=1
else:
break
方式二
def InserSort(alist):
n=len(alist)
for i in range(1,n):
for j in range(n-1,i-1,-1):
if alist[j]<alist[j-1]:
alist[j],alist[j-1]=alist[j-1],alist[j]
if __name__ == '__main__':
list=[2,3,6,2,1,5,9,6,3,1]
InserSort(list)
print(list)
3.希尔排序
def ShellSort(alist):
n=len(alist)
gap=n//2
while gap>=1:
for j in range(gap,n):
i=j
while i>0:
if alist[i] < alist[i - 1]:
alist[i],alist[i-1]=alist[i-1],alist[i]
i-=gap
else:
break
gap//=2
if __name__ == '__main__':
list = [2, 3, 6, 2, 1, 5, 9, 6, 3, 1]
ShellSort(list)
print(list)
4.快速排序
def quick_sort(alist,first,last):
if first>=last:
return
mid_value=alist[first]
low=first
high=last
while low<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
quick_sort(alist,first,low-1)
#对low左边进行快速排序
quick_sort(alist,low+1,last)
#对low右边进行快速排序
if __name__ == '__main__':
list = [2, 3, 6, 2, 1, 5, 9, 6, 3, 1]
quick_sort(list,0,len(list)-1)
print(list)
5.归并排序
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:])
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+=right_li[right_pointer:]
result+=left_li[left_pointer:]
return result
if __name__ == '__main__':
list = [2, 3, 6, 2, 1, 5, 9, 6, 3, 1]
print(merge_sort(list))
1.冒泡排序def BubbleSort(alist): n=len(alist) for i in range(n): for j in range(n-i-1): if alist[j]>alist[j+1]: alist[j],alist[j+1]=alist[j+1],alist[j]if __name__ == '__main__': list=[2,3,6,2,1,5,9,6,3,1]