![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python算法
梦琦不是MQ
这个作者很懒,什么都没留下…
展开
-
堆排序python实现
堆排序,即利用堆的特性来进行排序,实现堆排序的思路是把数组构建成一颗二叉树,并随着每次堆的变化更新堆顶的最大/最小值堆排序的时间复杂度在所有情况下都是O(n*lgn),并且他是一个不稳定的算法.堆是一种数据结构,它是一种特殊的完全二叉树,如果这个堆是一个大顶堆(最大的元素在最上边),那么每个节点上的元素都应该比他的子节点要大,最大的元素在根节点上;反之亦然.先给出堆排序的代码,稍后分析'''作者:smallMQ 堆排序主要思想: 利用大顶树的性质,将最大的数放到最上边,.原创 2021-05-22 18:54:36 · 41 阅读 · 0 评论 -
动态规划|矩阵连乘|python实现
问题描述:给定n个矩阵{A1,…,An}且相邻两个矩阵是可乘的,考察这n个矩阵的连乘积问题.· 由于矩阵乘法满足结合律,所以计算矩阵的连乘可以有许多不同的计算次序。这种计算次序可以用加括号的方式来确定。· 若一个矩阵连乘积的计算次序完全确定,也就是说该连乘积已完全加括号,则可以依此次序反复调用2个矩阵相乘的标准算法计算出矩阵连乘积。将矩阵连乘积A.1…A简记为A[i:j],这里i<=j。考察计算A[i:j]的最优计算次序。设这个计算次序在矩阵Ak和Ak+1之间将矩阵链断开,i<=k&l原创 2021-05-22 18:42:53 · 4688 阅读 · 1 评论 -
快速排序|python实现
快速排序|python实现快速排序算法的主要思想是在数组中选择一个关键字key,并对数组进行遍历,将所有比它小的数放在他的左边,反之放在右边.快速排序算法的平均时间复杂度为O(nlg n),最好情况下的时间复杂度为O(nlg n),最坏情况下是O(n*n),因此快速排序算法是一个不稳定的排序python代码实现1基础类型(占空间)list1 = [2, 1, 10, 5, 2, 6, 3, 4, 20, 6, 7, 8]def QuickSort(l): if (len(l) <原创 2021-05-22 18:08:04 · 66 阅读 · 0 评论 -
归并排序|python实现
归并排序|python实现归并排序所采用的思想主要是分治思想.其主要实现方法是将数组先进行拆分,其次进行合并.将整个数组拆分为多个小数组排序问题,最后再将其进行归并排序实现,其时间复杂度为O(n*lg n),是一种稳点的排序方式.代码部分'''作者:smallMQ主要思想:分治思想\递归无论怎样时间复杂度都为O(n*lgn)稳定'''list1 = [2, 1, 10, 5, 2, 6, 3, 4, 20, 6, 7, 8]def MergeSort(l): if (le原创 2021-05-22 10:18:25 · 75 阅读 · 0 评论 -
初级排序算法python实现|插入排序|选择排序|冒泡排序
插入排序 直观的讲,插入排序算法是把给定数组元素中的元素依次插入到一个新的数组中,最终得到一个完整的有序列表. 插入排序是一个**稳定的排序算法** 插入排序的平均时间复杂度为O(n^2),最好的情况是O(n),最坏的情况则是O(n^2). 插入排序的空间复杂度为O(1). 插入排序的主要思想是:将列表进行分割成两半,左边表示有序,右边表示无序,初始默认左有一个元素,一个元素肯定为有序的,刚开始先遍历右边的列表元素,让列表右边部分与左边部分进行逐一比较(即此时也要遍历列表左边部分),并将每次原创 2021-04-25 19:12:24 · 128 阅读 · 1 评论