python_排序

快速排序

基本思想是:从一个数组中随机选出一个数N,通过一趟排序将数组分割成三个部分,1、小于N的区域 2、等于N的区域 3、大于N的区域,然后再按照此方法对小于区的和大于区分别递归进行,从而达到整个数据变成有序数组。

#实现第一次排序,之后使用递归方法完成以后的排序
def quick_sort(list,start,end):
    left = start
    right = end
    key = list[left]#找到一个关键数字,一般为第一个元素
    while left < right:
        #从最后一个元素开始向前与关键字key比较直到left=right 或右边的数字小于关键字为止
        while left < right and list[right] >= key:
            right -=1
        list[left],list[right] = list[right],list[left]
        #从左边的第一个元素开始向后域关键字比较直到left=right 或左边的数字大于关键字为止
        while left < right  and list[left] <= key:
            left +=1
        list[left], list[right] = list[right], list[left]
    return list
list = [6,2,7,3,9,8]
print(quick_sort(list,0,len(list)-1))
————————————————————————————————
def quick_sort(list,start,end):
    left = start
    right = end
    if left <right:
        key = list[left]#找到一个关键数字,一般为第一个元素
        while left < right:
            #从最后一个元素开始向前与关键字key比较直到left=right 或右边的数字小于关键字为止
            while left < right and list[right] >= key:
                right -=1
            list[left],list[right] = list[right],list[left]
            #从左边的第一个元素开始向后域关键字比较直到left=right 或左边的数字大于关键字为止
            while left < right  and list[left] <= key:
                left +=1
            list[left], list[right] = list[right], list[left]
        #将列表中关键字的地方左右分为两组
        quick_sort(list,start,left-1)#左边的分组
        quick_sort(list,right+1,end)#右边的分组
    return list
list = [6,2,7,3,9,8]
print(quick_sort(list,0,len(list)-1))

 插入排序

插入排序的基本操作就是将一个数据插入到已经排序好的有序数据中,从而得到一个新的,个数加一的有序数据,算法适用于少量数据的排序

 有一个已经有序的序列,要求在这个已经排好的数据序列中插入一个数,要求插入后数据序列仍然有序,此时使用插入排序

插入排序的的步骤

  1、从第一个元素开始,该元素认为是已经排序好的

  2、取出下一个元素,在已经排序好的元素序列中从后向前扫描

  3、如果该元素(已经排序好的)大于新元素则将该元素移到下一位置

  4、重复步骤3,直到找到已经排好的元素小于或等于该元素为止

  5、将新元素插入到下一位置中

  6、重复2~5的步骤

def insert_sort(list):
    #循环次数
    for i in range(1,len(list)):
        #确定关键数字
        key = list[i]
        j = i-1
        while j >=0 and list[j] > key:
            # 如果该元素(已经排序好的)大于新元素(key)则将该元素移到下一位置
            list[j+1] = list[j]
            j-=1
        #将该元素(key)插入到下一个位置中    
        list[j+1] = key
    return list
list = [4,5,25,74,1,3,4,]
print(insert_sort(list))

 

posted @ 2018-08-23 09:32  xdl_smile  阅读(114)  评论(0编辑  收藏  举报