八大排序算法 python

本文详细介绍了多种排序算法,包括插入排序、冒泡排序、选择排序、快速排序、堆排序、希尔排序、归并排序及基数排序等,并提供了每种算法的具体实现代码。
# -*- coding:utf-8 -*-
def insert_sort(lists):
    # 插入排序
    for i in range(1,len(lists)):
        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):
    for i in range(len(lists)-1):
        for j in range(i+1,len(lists)):
            if lists[i] > lists[j]:
                lists[i],lists[j] = lists[j],lists[i]
    return lists


def select_sort(lists):
    for i in range(len(lists)):
        minx = i
        for j in range(i+1,len(lists)):
        if lists[minx] > lists[j]:
           minx = j
        lists[minx] ,lists[i] = lists[i],lists[minx]
    return lists


def quick_sort(lists,left,right):
    if left >= right:
        return lists
    low = left
    high = right
    key = lists[low]
    while left < right:
        while left < right and lists[right] >= key:
            right -= 1
        lists[left] = lists[right]
        while left < right and lists[left] <= key:
            left += 1
        lists[right] = lists[left]
    #print left,right
    lists[right] = key
    quick_sort(lists,low,left-1)
    quick_sort(lists,left+1,high)
    return lists


def heap_sort(lists):
    def build_heap(lists,size):
        for i in range(size/2)[::-1]:
            adjust_heap(lists,i,size)


    def adjust_heap(lists,i,size):
        lchild = 2*i+1
        rchild = 2*i+2
        min = i
        if i < size/2:
            if lchild < size and lists[lchild] < lists[min]:
                min = lchild
            if rchild < size and lists[rchild] < lists[min]:
                min = rchild
            if min != i:
                lists[min],lists[i] = lists[i],lists[min]
                adjust_heap(lists,min,size)
                
    size = len(lists)
    build_heap(lists,size)
    for i in range(size)[::-1]:
        lists[0],lists[i] = lists[i],lists[0]
        adjust_heap(lists,0,i)
    return lists


def shell_sort(lists):
    d = len(lists)/2
    while d:
        for i in range(d):
            j = i+d            
            while j < len(lists):
                k = j-d
                key = lists[j]
                while k >= 0:
                    if lists[k] > key:
                        lists[k+d] = lists[k]
                        lists[k] = key
                    k -= d
                j += d
        print d
        print lists
        d /= 2
    return lists


def merge_sort(lists):
    def merge(m1,m2):
        i,j = 0,0
        result = []
        while i < len(m1) and j < len(m2):
            if m1[i] > m2[j]:
                result.append(m2[j])
                j += 1
            else:
                result.append(m1[i])
                i += 1
        result += m1[i:]
        result += m2[j:]
        return result
    if len(lists) <= 1:
        return lists
    num = len(lists)/2
    m1 = merge_sort(lists[:num])
    m2 = merge_sort(lists[num:])
    return merge(m1,m2)


import math
def radix_sort(lists,radix):
    k = int(math.ceil(math.log(max(lists),radix)))
    bucket = [[] for i in xrange(radix)]
    for i in xrange(1,k+1):
        for val in lists:
            bucket[val%(radix**i)/(radix**(i-1))].append(val)
        del lists[:]
        for bc in bucket:
            lists.extend(bc)
            del bc[:]
    return lists


a = [73, 22, 93, 43, 55, 14, 28, 65, 39, 81]
print radix_sort(a,10)
print merge_sort(a)
带开环升压转换器和逆变器的太阳能光伏系统 太阳能光伏系统驱动开环升压转换器和SPWM逆变器提供波形稳定、设计简单的交流电的模型 Simulink模型展示了一个完整的基于太阳能光伏的直流到交流电力转换系统,该系统由简单、透明、易于理解的模块构建而成。该系统从配置为提供真实直流输出电压的光伏阵列开始,然后由开环DC-DC升压转换器进行处理。升压转换器将光伏电压提高到适合为单相全桥逆变器供电的稳定直流链路电平。 逆变器使用正弦PWM(SPWM)开关来产生干净的交流输出波形,使该模型成为研究直流-交流转换基本操作的理想选择。该设计避免了闭环和MPPT的复杂性,使用户能够专注于光伏接口、升压转换和逆变器开关的核心概念。 此模型包含的主要功能: •太阳能光伏阵列在标准条件下产生~200V电压 •具有固定占空比操作的开环升压转换器 •直流链路电容器,用于平滑和稳定转换器输出 •单相全桥SPWM逆变器 •交流负载,用于观察实际输出行为 •显示光伏电压、升压输出、直流链路电压、逆变器交流波形和负载电流的组织良好的范围 •完全可编辑的结构,适合分析、实验和扩展 该模型旨在为太阳能直流-交流转换提供一个干净高效的仿真框架。布局简单明了,允许用户快速了解信号流,检查各个阶段,并根据需要修改参数。 系统架构有意保持模块化,因此可以轻松扩展,例如通过添加MPPT、动态负载行为、闭环升压控制或并网逆变器概念。该模型为进一步开发或整合到更大的可再生能源模拟中奠定了坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值