python——,冒泡、归并、快排

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


def quick_sort(array, l, r):
    if l < r:
        q = partition(array, l, r)
        quick_sort(array, l, q - 1)
        quick_sort(array, q + 1, r)


def partition(array, l, r):
    x = array[r]
    i = l - 1
    for j in range(l, r):
        if array[j] <= x:
            i += 1
            array[i], array[j] = array[j], array[i]
    array[i + 1], array[r] = array[r], array[i + 1]
    return i + 1


quick_sort(array,1,len(array)-1)
print(array)
array=[2,8,7,1,3,5,6,4]

def quick_sort(array, l, r):
    if l < r:
        q = partition(array, l, r)
        quick_sort(array, l, q - 1)
        quick_sort(array, q + 1, r)
        
def partition(array, l, r):
    x = array[r]
    i = l - 1
    for j in range(l, r):
        if array[j] <= x:
            i += 1
            array[i], array[j] = array[j], array[i]
    array[i + 1], array[r] = array[r], array[i+1]
    return i + 1
quick_sort(array,0,len(array)-1)
print(array)
mylist = [49,38,65,97,76,13,27,59]

def quick_sort(mylist,start,end):
    if start<end:
        i,j=start,end
        base = mylist[i]
        while i<j:
                while(i<j) and (mylist[j]>=base):
                     j=j-1
                mylist[i]=mylist[j]
                while(i<j) and (mylist[i]<=base):
                      i=i+1
                mylist[j]=mylist[i]
        mylist[i]=base
        quick_sort(mylist,start,i-1)
        quick_sort(mylist,i+1,end)
    return mylist

quick_sort(mylist,0,len(mylist)-1)
print(mylist)

 https://www.cnblogs.com/Lin-Yi/p/7309143.html

归并排序:

def merge_sort(li):
     if len(li)==1:
         return li
     mid = len(li)//2
     left = li[:mid]
     right = li[mid:]
     le=merge_sort(left)
     rl=merge_sort(right)
     return merge(le,rl)

def merge(left,right):
     result=[]
     while len(left)>0 and len(right)>0:
             if left[0]<=right[0]:
                   result.append(left.pop(0))
             else:
                   result.append(right.pop(0))

     result+= left
     result+= right
     return result

li = [2,8,4,1,3,5,6,7]
li2 = merge_sort(li)
print(li2)

猜你喜欢

转载自blog.csdn.net/weixin_42528089/article/details/83989469
今日推荐