冒泡排序,选择排序,快速排序

Posted ouyang99-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序,选择排序,快速排序相关的知识,希望对你有一定的参考价值。

#!/usr/bin/env python 
# -*- coding: utf-8 -*-
import random
import time


def cal_time(func):
def inner(*args, **kwargs):
start = time.time()
res = func(*args, **kwargs)
end = time.time()
print("%s用时为%s" % (func.__name__, end - start))
return res

return inner


冒泡排序

@cal_time
def bubble_sort(li):
    for i in range(len(li) - 1):
        flag = False
        for j in range(len(li) - 1 - i):
            if li[j] > li[j + 1]:
                li[j], li[j + 1] = li[j + 1], li[j]
                flag = True
        if not flag:
            return li
    return li

 


选择排序

@cal_time
def select_sort(li):
    for i in range(len(li) - 1):
        mindoc = i
        for j in range(i + 1, len(li)):
            if li[mindoc] > li[j]:
                li[mindoc], li[j] = li[j], li[mindoc]
    return li

 

快速排序

def patition(li, left, right):
    tmp = li[left]
    while left < right:
        while left < right and tmp <= li[right]:
            right -= 1
        li[left] = li[right]
        while left < right and tmp >= li[left]:
            left += 1
        li[right] = li[left]
    li[left] = tmp
    return left


def quick_sort(li, left, right):
    if left < right:
        mid = patition(li, left, right)
        quick_sort(li, left, mid - 1)
        quick_sort(li, mid + 1, right)


@cal_time
def quick(li, left, right):
    quick_sort(li, left, right)


if __name__ == ‘__main__‘:
# 冒泡排序
li = [random.randint(1, 1000) for i in range(1000)]
# res = bubble_sort(li)
# print(res)

# 选择排序
# res=select_sort(li)
# print(res)


# 快速排序
quick(li, 0, len(li) - 1)

以上是关于冒泡排序,选择排序,快速排序的主要内容,如果未能解决你的问题,请参考以下文章

js冒泡排序法——选择排序(other)——计数排序(桶排序)——快速排序——插入排序-更新

Scala实现冒泡排序,选择排序和快速排序

Go语言实现冒泡排序选择排序快速排序及插入排序的方法

排序算法之交换排序(冒泡排序快速排序)

快速排序,选择排序,冒泡排序

图形化排序算法比较:快速排序插入排序选择排序冒泡排序