Python数据结构之排序

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)])
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值