在线客服
扫描二维码
下载博学谷APP
扫描二维码
关注博学谷微信公众号
Python基础算法有哪些?作用是什么?算法是解决问题的思想和实施步骤,而编程是算法的实现,把人的语言转换成某种的编程语言。常见内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。

算法是指解题方案的准确而完整描述,一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
一、算法具有的重要特征
1、有穷性:算法有穷性是指算法必须能在执行有限个步骤之后终止;
2、确切性:算法每一步骤必须有确切定义;
3、输入项:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;
4、输出项:一个算法有一个或多个输出,以反映对输入数据加工后的结果,没有输出的算法毫无意义;
5、可行性:算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成也称之为有效性。
二、Python基础算法
1、冒泡排序
冒泡排序也是一种简单直观的排序算法。重复地走访过要排序的数列,一次比较两个元素,如果顺序错误就交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
2、插入排序
插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但原理是最容易理解,插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据在已排序序列中从后向前扫描,找到相应位置并插入。插入排序和冒泡排序一样也有一种优化算法叫做拆半插入。
3、希尔排序
希尔排序也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出改进方法的:插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率;但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位;希尔排序的基本思想是:先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行依次直接插入排序。
4、归并排序
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法Divide and 的一个非常典型的应用。作为一种典型的分而治之思想的算法应用,归并排序的实现由两种方法:自上而下的递归;自下而上的迭代;
5、快速排序
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要 Ο(nlogn) 次比较。在最坏状况下则需要 Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他算法更快,因为它的内部循环可以在大部分的架构上很有效率地被实现出来。快速排序使用分治法策略来把一个串行分为两个子串行。快速排序又是一种分而治之思想在排序算法上的典型应用。本质上快速排序应该算是在冒泡排序基础上的递归分治法。
6、堆排序
堆排序是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。分为两种方法:大顶堆:每个节点的值都大于或等于其子节点的值,在堆排序算法中用于升序排列;小顶堆:每个节点的值都小于或等于其子节点的值,在堆排序算法中用于降序排列;
7、计数排序
计数排序的核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。
8、桶排序
桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。为了使桶排序更加高效,我们需要做到这两点:在额外空间充足的情况下,尽量增大桶的数量,使用的映射函数能够将输入的 N 个数据均匀的分配到 K 个桶中,同时,对于桶中元素的排序,选择何种比较排序算法对于性能的影响至关重要。
9、基数排序
基数排序是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串和特定格式的浮点数,所以基数排序也不是只能使用于整数。
在实际工作中比较常用的Python算法应用是排序,Python程序员需要了解排序引入、冒泡排序、选择排序、插入排序、快速排序以及希尔排序等算法及其实现原理和复杂度。
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
Python的应用领域有哪些?Python爬虫应用场景介绍
Python的应用领域有哪些?Python爬虫应用场景:Web开发、网络编程、爬虫开发、云计算开发、人工智能、自动化运维、金融分析、科学运算、游戏开发、桌面软件。Python语言较其他语言相对简单被称为胶水语言,Python免费开源且兼容众多平台,具有非常丰富的Python库,接下来我们一起来看看Python的应用领域。
15021
2019-10-24 10:44:24
零基础如何学好Python开发?
作为一个小白想学好Python开发应该先确定明确目标、做好学习Python系统规划、选择适合的开发工具、进阶提升学习规划、多练多看加深对Python程序的理解,想入门一门编程语言就需要不断的进行练习。
7870
2019-12-16 19:41:16
学Python前需要学什么才能打好基础?
学Python前需要学什么才能打好基础?如果是有一定计算机编程基础相对学习Python更容易些,零基础小白也不用担心,Python是一门简洁、优雅、易读的编程语言,相对其他的学科容易很多。
10681
2020-03-06 11:48:49
Python基础语法学习之变量与赋值
近几年Python飞速发展,开始学习Python的人群不在仅仅局限于编程开发者,许多其他行业的从业者也开始将Python作为自己的职业技能。本文仍然是针对零基础的初学者,继续学习Python的基础语法——变量与赋值。主要内容包括变量和赋值的概念、代码演示、变量的特点和命名规范以及=符号。
7322
2020-04-16 10:53:42
想学Python需要报培训班吗
现在是一个快速发展的社会,许多人都面临就业难,就业竞争大的情况。这时候就有好多人想要选择学习编程语言这项技能。这样也就应运而出了好多的培训机构。但现在又会有许多人有疑惑,学习Python需要去培训吗?什么样的人比较需要进行报班学习呢?想学Python需要报培训班吗?
7924
2020-06-11 15:03:53
