各种排序啊……死磕!!每天码一遍!!!

还没写完……………………
在这里插入图片描述

插入排序

对于少量元素的排序,这是一个有效的算法
在这里插入图片描述
在这里插入图片描述

# 插入排序
def insert_sort(list):
  # 从第二个元素开始,依次加入有序队列中
  for i in range(1,len(list)):
    # 将list[i]插入已经排序好的队列list[0,...,i-1]中
    if list[i] < list[i-1]:
      key = list[i]
      index = i
      # 从后往前依次比较每个元素
      for j in range(i-1,-1,-1):
        if list[j] > key:
          list[j+1] = list[j]
          index = j
        else:
          break
      list[index] = key
  return list

# 底下这个感觉更好理解一些
def insert_sort(list):
  # 从第二个元素开始,依次加入有序队列中
  for j in range(1,len(list)):
    key = list[j]
    i = j - 1
    while i>0 and list[i] > key:
      list[i+1] = list[i]
      i = i - 1
    list[i+1] = key
  return list

shell排序

shell排序也是一种插入排序,是简单插入排序经过改进之后的一个更高效的版本,也成为缩小增量排序
将较大的数据集分割成若干个小组,然后对每个小组分别进行插入排序。
每一个gap过程中,每个小组内部是有序的
在这里插入图片描述

def shell_sort(list):
  gap = len(list)//2
  while gap>0:
    for i in range(gap,len(list)):
      for j in range(i,gap-1,-gap):
        if list[j]<list[j-gap]:
          list[j],list[j-gap] = list[j-gap],list[j]
        else:
          break
    gap = gap // 2
  return list

选择排序

  1. 首先在所有数组元素中找到最小值元素,放在list[0]中;
  2. 接着在不包含list[0]的余下数组元素中再找出最小值的元素,放置在list[1]中;
  3. 如此下去,一直到最后一个元素。

在这里插入图片描述

def select_sort(list):
  for i in range(len(list)):
    min = i
    for j in range(i+1,len(list)):
      if list[j] < list[min]:
        min = j
    tmp = list[i]
    list[i] = list[min]
    list[min] = tmp
  return list

堆排序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

冒泡排序

一个轮次一个轮次的处理
在每一轮次中依次对待排序数组元素中相邻的两个元素进行比较,将大的放前,小的放后–降序(或是将小的放前,大的放后,升序)
当没有交换时,则数据已被排好序
在这里插入图片描述

# 升序排序
# 每一轮次把当前最大的冒到最后
def bubble_sort(list):
  for i in range(len(list)):
    for j in range(1,len(list)-i):
      if list[j] < list[j-1]:
        tmp = list[j-1]
        list[j-1] = list[j]
        list[j] = tmp
  return list

快速排序

归并排序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

基数排序

猜你喜欢

转载自blog.csdn.net/weixin_39333120/article/details/111561269