
算法实现
无敌的白金之星
这个作者很懒,什么都没留下…
展开
-
python排序算法实现——(四)快速排序
快速排序简介快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。步骤为:从数列中挑出一个元素,称为”基准”(pivot), 重新排序...原创 2018-08-18 09:34:12 · 198 阅读 · 0 评论 -
python排序算法实现——(五)归并排序
归并排序是采用分治法的一个非常典型的应用。归并排序的思想就是先递归分解数组,再合并数组。将数组分解最小之后,然后合并两个有序数组,基本思路是比较两个数组的最前面的数,谁小就先取谁,取了后相应的指针就往后移一位。然后再比较,直至一个数组为空,最后把另一个数组的剩余部分复制过来即可。代码实现def merge_sort(alist): if len(alist) <=...原创 2018-08-18 10:03:31 · 225 阅读 · 0 评论 -
python搜索算法实现——(一)二分查找法
二分查找法简介二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查...原创 2018-08-18 11:20:28 · 347 阅读 · 0 评论 -
python搜索算法实现——(二)贪婪算法
贪婪算法简介假设你办了个广播节目,要让全美国50个州的听众都能听得到,为此, 你需要决定在哪些广播台播出。每个广播台台播出都需要费用,所以你需要尽可能地在更少的广播台播出节目。现有广播台名单如下: 每个广播台都覆盖不同的范围,但是有些是重复的 如何才能找出覆盖全美50个州的最小广播台集和呢?先提供一种方法: (1)列出每种可能的广播台集和,称之为幂集,总共有2^n种集和 (2)...原创 2018-08-18 15:28:36 · 13110 阅读 · 1 评论 -
python排序算法实现——(一)冒泡排序
冒泡排序简介冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。运作原理比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。对每一对相邻元素作...原创 2018-08-17 16:49:32 · 283 阅读 · 0 评论 -
python排序算法实现——(二)选择排序
选择排序的原理选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至...原创 2018-08-17 17:09:44 · 260 阅读 · 0 评论 -
python排序算法实现——(三)插入排序
插入排序原理插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 代码实现:def insert_sort(alist): # 从第二个位置,即下标为1的元素开始向...原创 2018-08-17 19:25:39 · 173 阅读 · 0 评论