算法设计与分析
potato_big
这个作者很懒,什么都没留下…
展开
-
Python实现查找第K小元素(上)--快排思想
今天抽时间实现的是查找第KKK小元素算法。问题描述:给定线性序集中nnn个元素和一个整数k(1<=k<=n)k (1<=k<=n)k(1<=k<=n),要求找出这nnn个元素中第kkk小的元素。对于这个问题,一般可以直接想到的方法就是,先对这nnn个数字进行排序,然后直接选取第k个元素,排序算法可以用我们之前实现过的归并排序或者快速排序,这样实现的算法时间复...原创 2019-12-05 00:12:23 · 3764 阅读 · 2 评论 -
Python实现归并排序(合并排序)
这两天在复习算法考试,抽着时间实现了一下里面的代码,今天实现的是使用了分治思想的归并排序算法(合并排序)。原创 2019-12-01 23:19:43 · 1415 阅读 · 0 评论 -
递归算法学习笔记
递归概念任何可以用计算机求解的问题所需的计算时间都与其规模有关,问题的规模越小,解题所需的计算时间往往也越短,从而比较容易处理。直接或者间接调用自身的算法称为递归算法,用函数自身给出定义的函数称为递归函数。使用递归技术往往使函数的定义和算法的描述简捷且易于理解,有些数据结构,如二叉树等,由于其本身固有的递归特性,特别适合用递归的形式来描述。当我们设计递归算法时,应满足三点:①符合递归的描述:需...原创 2019-09-07 19:11:07 · 1084 阅读 · 0 评论 -
Python实现二分查找(折半查找)
我们在学习编程语言或者算法设计的时候,总是绕不过查找算法和排序算法。对于顺序查找和冒泡查找我们应该是最熟悉的了,如果这两个还不会,真的要加把劲儿了。刚好最近算法老师在讲分治思想,刚好二分查找就是根据分治思想进行设计的。在有序数组nums中查找一个数字x,顺序查找的方法是将数组nums中的元素一个一个与x进行比较,时间复杂度为O(n)O(n)O(n)。二分查找的主要思想是:充分利用数组nums...原创 2019-09-23 18:56:59 · 643 阅读 · 0 评论 -
Python实现快速排序(非递归实现)
快速排序同样也是分治的思想,核心依然是分而治之,各个击破。快速排序的思想是:找到一个数字x,对数组nums进行排序,使x左侧的数字都小于x,右侧的数字都大于x,然后对左侧和右侧重复同样的操作,直到所有的数字都已按序排列。根据上面的思想,实现代码如下:#QuickSort:used the divide and conquer idea to sort arraydef QuickSort(...原创 2019-09-25 11:38:01 · 1149 阅读 · 0 评论