zoukankan      html  css  js  c++  java
  • 冒泡,快排,堆排序

    #!/usr/bin/env python
    # _*_ coding:utf-8 _*_
    __author__ = "ligq"
    import time
    import random
    import copy
    import sys
    
    def cal_time(func):
        def wrapper(*args, **kwargs):
            t1 = time.time()
            result = func(*args, **kwargs)
            t2 = time.time()
            print("%s running time: %s secs." % (func.__name__, t2 - t1))
            return result
        return wrapper
    
    
    #构造堆
    def sift(data,low ,high):
        i = low
        j = 2 * i + 1
        tmp = data[i]
        while j <= high:
            if j+1 <= high and data[j] < data[j +1]:
                j += 1
            if data[j] >tmp:
                data[i] = data[j]
                i = j
                j = 2*i+1
            else:
                break
        data[i]=tmp
    
    #堆排序
    @cal_time
    def heap_sort(data):
        n = len(data)
        for i in range (n // 2 -1,-1,-1):
            sift(data,i ,i -1)
        for i in range(n-1,-1,-1):
            data[0],data[i] = data[i],data[0]
            sift(data,0,i-1)
    
    
    #冒泡排序
    @cal_time
    def bubble_sort(data):
        for i in range(len(li)-1):
            exchange = False
            for j in range(len(li) - i- 1):
                if li[j] > li [j+1]:
                    li[j],li[j+1] = li[j+1],li[j]
                    exchange =True
            if not exchange:
                break
    
    
    
    
    
    li = list(range(100))
    
    # random.shuffle(li)
    print(li)
    bubble_sort(li)
    print(li)
    # random.shuffle(li)
    print(li)
    heap_sort(li)
    print(li)
  • 相关阅读:
    项目经验分享(上)
    socket.io实现在线群聊
    socket.io中文文档
    常用的Sublime Text插件及安装方法
    常用的Atom插件
    atom及其插件activate-power-mode下载安装
    jeesite快速开发平台
    js权威指南
    hexSHA1散列加密解密(不可逆)
    腾讯云企业邮箱
  • 原文地址:https://www.cnblogs.com/noube/p/6564937.html
Copyright © 2011-2022 走看看