美文网首页
python排序方法

python排序方法

作者: bridgeZ | 来源:发表于2018-10-24 10:45 被阅读0次

一、冒泡排序

# [8,9,7,6,5,4,3,2,1] 升序
# 第1趟 i=0 [8,7,6,5,4,3,2,1, 9] 获取一个最大数,放在列表最右边
# 第2趟 i=1 [7,6,5,4,3,2,1, 8,9] 获取第二大的数,放在列表最右边
# 第3趟 i=2 [6,5,4,3,2,1, 7,8,9] 获取第三大的数,放在列表最右边
# 第4趟 i=3 [5,4,3,2,1, 6,7,8,9] 获取第四大的数,放在列表最右边
# 第5趟 i=4 [4,3,2,1, 5,6,7,8,9] 获取第五大的数,放在列表最右边
# 第6趟 i=5 [3,2,1, 4,5,6,7,8,9] 获取第六大的数,放在列表最右边
# 第7趟 i=6 [2,1, 3,4,5,6,7,8,9] 获取第七大的数,放在列表最右边
# 第8趟 i=7 [1, 2,3,4,5,6,7,8,9] 获取第八大的数,放在列表最右边
#

list1 = [8,9,7,6,5,4,3,2,1]

for i in range(len(list1)-1): # 趟数

   for j in range(len(list1)-1-i): # 每一趟中,遍历除了已经排好的最大数以外的 剩下的数
    if list1[j] > list1[j+1]:
      list1[j], list1[j+1] = list1[j+1], list1[j]

print(list1)

二、快速排序

def quick_sort(mylist):
# 判断临界值
  if len(mylist) <= 1:
    return mylist

# 找基准数
  n = mylist.pop(len(mylist)//2)

# 遍历,把小于基准数的元素放在左边列表,大于基准数的放在右边列表中
  left = []
  right = []
  for i in mylist:
    if i < n:
      left.append(i)
    else:
      right.append(i)
    # print(left, [n], right) # [4, 1, 3, 0, 2] [5] [6, 8, 9, 7]

# 递归调用
  return quick_sort(left) + [n] + quick_sort(right)


list1 = [4,1,6,3,8,5,0,9,7,2]
print(quick_sort(list1))

三、选择排序

# [8,9,5,6,7,4,3,2,1] # 升序
# 第1趟 i=0 [1, 9,8,6,7,5,4,3,2]
# 第2趟 i=1 [1,2, 9,8,7,6,5,4,3]
# 第3趟 i=2 [1,2,3, 9,8,7,6,5,4]
# 第4趟 i=3 [1,2,3,4, 9,8,7,6,5]
# 第5趟 i=4 [1,2,3,4,5, 9,8,7,6]
# 第6趟 i=5 [1,2,3,4,5,6, 9,8,7]
# 第7趟 i=6 [1,2,3,4,5,6,7, 9,8]
# 第8趟 i=7 [1,2,3,4,5,6,7,8, 9]
#

list1 = [8,9,5,6,7,4,3,2,1]

for i in range(len(list1)-1): # 趟数
  for j in range(i+1, len(list1)):
    if list1[i] > list1[j]:
      list1[i], list1[j] = list1[j], list1[i]

print(list1)

相关文章

网友评论

      本文标题:python排序方法

      本文链接:https://www.haomeiwen.com/subject/gmibbftx.html