Python基础----排序(插入、冒泡、快速、归并)

# -*- coding:UTF-8 -*-
def insert_sort(origin_list):
    sorted_list = []
    for i in range(0, len(origin_list)):
        #print sorted_list
        if len(sorted_list) == 0:
            sorted_list.append(origin_list[i])
            continue
        for j in range (len(sorted_list)-1, -1, -1):#开始值、结束值、步长
            if sorted_list[j] <= origin_list[i]:
                sorted_list.insert(j +1, origin_list[i])
                break
            if j == 0:
                sorted_list.insert(0, origin_list[i])
    origin_list[:] = sorted_list[:]

origin_list = [5,3,1,7,9,8]
insert_sort(origin_list)
#print origin_list

def bubble_sort(origin_list):
   for i in range(len(origin_list), 0, -1):
        for j in range(0, i-1):
            if origin_list[j] > origin_list[j+1]:
                origin_list[j], origin_list[j+1] = origin_list[j+1], origin_list[j]

origin_list = [5,3,1,7,9,8]
bubble_sort(origin_list)
#print origin_list

def quick_sort(origin_list, start, end):
    if start >= end:
        return
    left = start
    right = end
    flag_index = left
    while left < right:
        while right > left:
            if origin_list[right] < origin_list[flag_index]:
                origin_list[right], origin_list[flag_index] = origin_list[flag_index], origin_list[right]
                flag_index = right
                break
            right -= 1
        while left < right:
            if origin_list[left] > origin_list[flag_index]:
                origin_list[left], origin_list[flag_index] = origin_list[flag_index], origin_list[left]
                flag_index = left 
                break
            left += 1
        quick_sort(origin_list, start, flag_index)
        quick_sort(origin_list, flag_index+1, end)

origin_list = [5,3,1,7,9,8]
quick_sort(origin_list, 0, len(origin_list) -1)
#print origin_list

def merge_sort(origin_list, start, end):
    if end <= start:
        return
    mid = (start + end) / 2
    merge_sort(origin_list, start, mid)
    merge_sort(origin_list, mid + 1, end)
    left_head = start
    right_head = mid + 1
    temp_list = []
    while left_head <= mid and right_head <=end:
        if origin_list[left_head] < origin_list[right_head]:
            temp_list.append(origin_list[left_head])
            left_head += 1
        if origin_list[left_head] > origin_list[right_head]:
            temp_list.append(origin_list[right_head])
            right_head += 1
    if left_head <= mid:
        temp_list += origin_list[left_head:mid + 1]
    if right_head <= end:
        temp_list += origin_list[right_head:end + 1]
    for i in range(0, len(temp_list)):
        origin_list[i + start] = temp_list[i]

        
origin_list = [5,3,1,7,9,8]
merge_sort(origin_list, 0, len(origin_list) -1)
print origin_list


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值