python排序算法的几种实现

#1、冒泡排序
def bubble_sort(arr):
    n=len(arr)
    for i in range(n):
        for j in range(n-i-1):
            if arr[j]>arr[j+1]:
                arr[j],arr[j+1]=arr[j+1],arr[j]
    return arr
a=[1,4,7,3,2,24,33]
sorted_list=bubble_sort(a)
print(sorted_list)
                
#2、选择排序
def select_sort(arr):
    n=len(arr)
    for i in range(n):
        min_idx=i
        for j in range(i+1,n):
            if arr[min_idx]>arr[j]:
                min_idx=j
        arr[i],arr[min_idx]=arr[min_idx],arr[i]
    return arr
b=[9,34,1,5,8,8]
sorted_list=select_sort(b)
print(sorted_list)
          
#3、插入排序
def insert_sort(arr):
    n=len(arr)
    for i in range(1,n):
        temp=arr[i]
        j=i-1
        while j>=0 and temp0 and len(right)>0:
    #为了保持稳定性,当遇到相等的时候优先把左侧的数放进结果列表,因为left本来也是大数列中比较靠左的
        if left[0]<=right[0]:
            result.append(left.pop(0))
        else:
            result.append(right.pop(0))
    #while循环出来之后 说明其中一个数组没有数据了,我们把另一个数组添加到结果数组后面
    result+=left
    result+=right
    return result
d=[9,78,5,3,2,1,4,7,9]
sorted_list=merge_sort(d)
print(sorted_list)   
    
#5\快速排序
def quick_sort(arr,start,end):
    # 递归的退出条件
    if start>=end:
        return 
    # 设定起始元素为要寻找位置的基准元素
    mid=arr[start]
    # low为序列左边的由左向右移动的游标
    low=start
    # high为序列右边的由右向左移动的游标
    high=end
    while low=mid:
            high-=1
     # 将high指向的元素放到low的位置上
        arr[low]=arr[high]
        # 如果low与high未重合,low指向的元素比基准元素小,则low向右移动
        while low0:
        for i in range(dist,n):
            temp=arr[i]
            j=i
            while j>=dist and temp

 

你可能感兴趣的:(python)