主流排序算法——python

冒泡排序:

def sort(List):
    for i in range(len(List)-1):
        for j in range(SB):
            if List[j]>List[j+1]:
                t=List[j]
                List[j]=List[j+1]
                List[j+1]=t

选择排序:

def sort(List):
    for i in range(len(List)):
        min=2187483647
        k=0
        for j in range(i,len(List)):
            if List[j]<min:
                min=List[j]
                k=j
        p=List[i]
        List[i]=List[k]
        List[k]=p

插入排序:

def sort(List):
    for i in range(len(List)):
        for j in range(i):
            if List[i]<List[j]:
                t=List[i]
                List[i]=List[j]
                List[j]=t

希尔排序:

def shell_sort(arr):
    gap=len(arr)//2
    while gap>0:
        for i in range(gap,len(arr)):
            temp=arr[i]
            j=i
            while j>=gap and arr[j-gap]>temp:
                arr[j]=arr[j-gap]
                j-=gap
            arr[j]=temp
        gap//=2

快速排序:

def par(start,end,List):
    p=List[start]
    m=start
    for i in range(start+1,end+1):
        if List<p:
            m+=1
            t=List[m]
            List[m]=List[i]
            List[i]=t
    List[start]=List[m]
    List[m]=p
    return m
def sort(start,end,List):
    if start>=end:
        return 0
    p=par(start,end,List)
    sort(start,p-1,List)
    sort(p+1,end,List)

归并排序:

def sort(arr):
    if len(arr)<=1:
        return arr
    mid=len(arr)//2
    left=arr[:mid]
    right=arr[mid:]
    sort(left)
    sort(right)
    return merge(left,right)
 
def merge(left,right):
    result=[]
    i,j=0,0
    while i<len(left) and j<len(right):
        if left[i]<right[j]:
            result.append(left[i])
            i+=1
        else:
            result.append(right[j])
            j+=1
    result+=left[i:]
    result+=right[j:]
    return result

 堆排序:

def down(p,l,List):
    t=List[p]
    c=2*p+1
    while c<l:
        if c+1<l and List[c+1]>List[c]:
            c+=1
        if t>=List[c]:
            break
        List[p]=List[c]
        p=c
        c=2*c+1
    List[p]=t
def sort(List):
    for i in range((len(List)-2)//2,-1,-1):
        down(i,len(List),List)
    for i in range(len(List),-1,-1):
        t=List[i]
        List[i]=List[0]
        List[0]=t
        down(0,i,List)

计数排序:

def sort(List):
    max=List[0]
    min=List[0]
    for i in range(1,len(List)):
        if List[i]>max:
            max=List[i]
        if List[i]<min:
            min=List[i]
    d=max-min
    array=[0]*(d+1)
    for i in range(0,len(List)):
        array[List[i]-min]+=1
    for i in range(1,len(array)):
        array[i]+=array[i-1]
    temp=[0]*len(List)
    for i in range(len(List)-1,-1,-1):
        temp[array[List[i]-min]-1]=List[i]
        array[List[i]-min]-=1
    List=temp

桶排序:

def sort(List):
    if len(List)<=1:
        return 0
    max=List[0]
    min=List[0]
    for i in range(1,len(List)):
        if List[i]>max:
            max=List[i]
        if List[i]<min:
            min=List[i]
    d=max-min
    t=len(List)
    bucket=[]
    for i in range(0,t):
        bucket.append([])
    for i in range(0,t):
        num=int((List[i]-min)*(t-1)/d)
        bucket[num].append(List[i])
    for i in range(0,t):
        sort(bucket[i])
    temp=[]
    for i in bucket:
        for j in i:
            temp.append(j)
    List=temp

基数排序:

def sort(List):
    max=List[0]
    for i in range(1,len(List)):
        if List[i]>max:
            max=List[i]
    d=len(str(max))
    for i in range(d):
        k=10**i
        array=[[]]*10
        for j in List:
            t=j//k
            t%=10
            array[t].append[k]
        temp=[]
        for n in array:
            for m in n:
                temp.append(m)
        List=temp

相关推荐

  1. 主流排序算法——python

    2024-06-16 13:12:01       37 阅读
  2. 主流排序算法

    2024-06-16 13:12:01       50 阅读
  3. python排序算法代码

    2024-06-16 13:12:01       39 阅读
  4. python 八大排序算法

    2024-06-16 13:12:01       39 阅读
  5. 快速排序算法Python版)

    2024-06-16 13:12:01       27 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-16 13:12:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-16 13:12:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-16 13:12:01       82 阅读
  4. Python语言-面向对象

    2024-06-16 13:12:01       91 阅读

热门阅读

  1. make menuconfig 分析

    2024-06-16 13:12:01       32 阅读
  2. leecode N皇后

    2024-06-16 13:12:01       36 阅读
  3. HTML基础标签解析:H1-H6、DIV与P的正确使用方法

    2024-06-16 13:12:01       26 阅读
  4. Vue3 中 props 与 emit 用法

    2024-06-16 13:12:01       35 阅读
  5. django orm 查询返回指定关键字

    2024-06-16 13:12:01       35 阅读
  6. 深度学习500问——Chapter12:网络搭建及训练(1)

    2024-06-16 13:12:01       26 阅读
  7. 【AI原理解析】— 星火大模型

    2024-06-16 13:12:01       32 阅读
  8. 基于SpringBoot+Spark搭建本地计算引擎服务

    2024-06-16 13:12:01       38 阅读