首页 > 编程语言 > 详细

排序——选择排序、插入排序、冒泡排序、归并排序

时间:2019-08-07 16:08:15      阅读:101      评论:0      收藏:0      [点我收藏+]
import math
def select_sort(lists):
    """选择排序"""
    count = len(lists)
    for i in range(count):
        min = i
        for j in range(i+1,count):
            if lists[min] > lists[j]:
                min = j
        lists[i],lists[min] = lists[min], lists[i]
    return lists


def insert_sort(lists):
    """插入排序"""
    count = len(lists)
    for i in range(1, count):
        key = lists[i]
        j = i-1
        while j >= 0:
            if lists[j] > key:
                lists[j+1] = lists[j]
                lists[j] = key
            j -= 1
    return lists


def bubble_sort(lists):
    """冒泡排序"""
    count = len(lists)
    for i in range(count-1):
        for j in range(count-1-i):
            if lists[j] > lists[j+1]:
                lists[j], lists[j+1] = lists[j+1], lists[j]
    return lists


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 merge_sort(lists):
    """归并排序"""
    if len(lists) <= 1:
        return lists
    count = len(lists)//2
    left = merge_sort(lists[:count])
    right = merge_sort(lists[count:])
    return merge(left, right)


if __name__ == __main__:
    list = [3, 4, 2, 8, 9, 5, 1]
    for ele in list:
        print(ele, end=" ")
    print("\n")
    for ele in merge_sort(list):
        print(ele, end=" ")
3 4 2 8 9 5 1 

1 2 3 4 5 8 9 
Process finished with exit code 0

 

排序——选择排序、插入排序、冒泡排序、归并排序

原文:https://www.cnblogs.com/caigouba/p/11315815.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!