本人初学小白,如有问题,请大佬不吝赐教!!!
'''
#冒泡排序
def bubble_sort(nums):
for i in range(len(nums)-1):
for j in range(len(nums)-1-i):
if nums[j]>nums[j+1]:
nums[j],nums[j+1]=nums[j+1],nums[j]
return nums
h=bubble_sort([1,3,5,7,2,4,6,8])
'''
'''
#选择排序
def select_sort(nums):
for i in range(len(nums)-1):
premin,preminindex=nums[i],i
for j in range(i+1,len(nums)):
if nums[j]<premin:
premin,preminindex=nums[j],j
if preminindex!=i:
nums[preminindex],nums[i]=nums[i],premin
return nums
h=select_sort([1,3,5,7,2,4,6,8])
'''
'''
#插入排序
def insert_sort(nums):
for j in range(len(nums)):
i=j
while i>0:
if nums[i]<nums[i-1]:
nums[i],nums[i-1]=nums[i-1],nums[i]
i-=1
else:
break
return nums
h=insert_sort([1,3,5,7,2,4,6,8])
'''
'''
#希尔排序
def shell_sort(nums):
n=len(nums)
gap=n//2
while gap>0:
for j in range(gap,n):
i=j
while i>0:
if nums[i]<nums[i-gap]:
nums[i],nums[i-gap]=nums[i-gap],nums[i]
i-=gap
else:
break
gap//=2
return nums
h=shell_sort([1,3,5,7,2,4,6,8])
'''
'''
#快速排序
def quick_sort(nums,first,last):
if first>=last:
return
low=first
high=last
mid_value=nums[first]
while low<high:
while low<high and nums[high]>=mid_value:
high-=1
nums[low]=nums[high]
while low<high and nums[low]<mid_value:
low+=1
nums[high]=nums[low]
# #从循环退出时,low==high
nums[low]=mid_value
#对low左边的列表执行快速排序
quick_sort(nums,first,low-1)
#对low右边的列表执行快速排序
quick_sort(nums,low+1,last)
return nums
h=quick_sort([1,3,5,7,2,4,6,8],0,7)
'''
#归并排序
def merge_sort(nums):
n=len(nums)
mid=n//2
if len(nums)<=1:
return nums
l_list=merge_sort(nums[:mid])
r_list=merge_sort(nums[mid:])
l_point,r_point=0,0
res=[]
while l_point<len(l_list) and r_point<len(r_list):
if l_list[l_point]<r_list[r_point]:
res.append(l_list[l_point])
l_point+=1
else:
res.append(r_list[r_point])
r_point+=1
res+=l_list[l_point:]
res+=r_list[r_point:]
return res
h=merge_sort([1,3,5,7,2,4,6,8])