Python数据结构之排序
# 92.选择排序
# def select_sort(lists):
# count=len(lists)
# for i in range(count):
# min=1 # 第一个元素
# for j in range(i+1,count): # 第二个元素以后
# if lists[min]>lists[j]:
# min=j
# lists[min],lists[i]=lists[i],lists[min]
# return lists
#
# if __name__=="__main__":
# lists0=[3,4,28,9,5,1]
# print("排序前的数组为:",lists0)
# print("排序后的数组为:",[i for i in (select_sort(lists0))])
# #######################################################################################################################
# 93.插入排序
# def insert_sort(lists):
# count=len(lists)
# for i in range(1,count):
# key=lists[i]
# j=i-1
# while j>=0:
# if lists[j]>key:
# lists[j+1]=lists[j]
# lists[j]=key
# j-=1
# return lists
#
# if __name__=="__main__":
# lists0=[3,4,28,9,5,1]
# print("排序前的数组为:",lists0)
# print("排序后的数组为:",[i for i in insert_sort(lists0)])
# #######################################################################################################################
# 94.冒泡排序
# def bubble_sort(lists):
# for i in range(len(lists)-1):
# for j in range(len(lists)-i-1):
# if lists[j]>lists[j+1]:
# lists[j],lists[j+1]=lists[j+1],lists[j]
# return lists
#
# if __name__=="__main__":
# lists0=[3,4,28,9,5,1]
# print("排序前的数组为:",lists0)
# print("排序后的数组为:",[i for i in bubble_sort(lists0)])
# #######################################################################################################################
# 95.归并排序
# 不能运行
# def merge(left,right):
# i,j=0,0
# result=[]
# while i<len(left)and j<len(right):
# if left[i]<=right[j]:
# result.append(left[i])
# i+=1
# else:
# result.append(right[j])
# result+=left[i:]
# result+=right[j:]
# return result
#
# def merge_sort(lists):
# if len(lists)<=1:
# return lists
# num=len(lists)/2
# left=merge_sort(lists[:num])
# right=merge_sort(lists[num:])
# return merge(left,right)
#
# if __name__=="__main__":
# lists0=[3,4,28,9,5,1]
# print("排序前的数组为:",lists0)
# print("排序后的数组为:",[i for i in merge_sort(lists0)])
# ########################################################################################################################
# # 96.快速排序
# def quick_sort(lists,left,right):
# if left>=right:
# return lists
# key=lists[left]
# low=left
# hight=right
# while left<right:
# while left<right and lists[right]>=key:
# right-=1
# lists[right]=lists[left]
# while left<right and lists[left]<=key:
# left+=1
# lists[right]=lists[left]
# lists[right]=key
# quick_sort(lists,low,left-1)
# quick_sort(lists,left+1,hight)
# return lists
#
# if __name__=="__main__":
# lists0=[3,4,28,9,5,1]
# print("排序前的数组为:",lists0)
# print("排序后的数组为:",[i for i in quick_sort(lists0,0,len(lists0)-1)])
# #######################################################################################################################
# 97.希尔排序
# def shell_sort(lists):
# count=len(lists)
# step=2
# group=count/step
# while group>0:
# for i in range(0,group):
# j=i+group
# while j<count:
# k=j-group
# key=lists[i]
# while k>+0:
# if lists[k]>key:
# lists[k+group]=lists[k]
# lists[k]=key
# k-=group
# j+=group
# group/=step
# return lists
#
# if __name__=="__main__":
# lists0=[3,4,28,9,5,1]
# print("排序前的数组为:",lists0)
# print("排序后的数组为:",[i for i in shell_sort(lists0)])