各类算法比较

1 时间复杂度比较

1)  从平均时间复杂度来考虑:直接插入排序、冒泡、直接选择是三种简单的排序方法,为O(N2),快速、堆、二路归并排序为O(nlog2n),希尔排序介于两者之间。

2)  从最好的时间复杂度考虑:直接插入排序和冒泡为O(n),其他的最好情况平均相同。

3)  从最坏的时间复杂度考虑:快速排序为O(n2),直接插入、冒泡、希尔平均相同,但系数大约增加一倍,所以运行速度降低一半,最坏情况对直接选择、堆、归并影响不大。

2 空间复杂度比较

归并的空间复杂度最大,为O(n),快速为O(log2n),其他为O(1).

3 从稳定性比较

直接插入、冒泡、归并稳定;直接选择、希尔、快速、堆不稳定。

4 从算法简单性比较

直接插入、冒泡、直接选择都是简单方法,希尔、快速、堆、归并都是改进型方法。

5就平均性能而言,快速排序最省时间,但最坏情况下的时间性能不如堆排序和归并排序;就堆排序和归并排序而言,当n较大时,归并排序所需时间最省,但需要的辅助空间最多。

6 从稳定性看,时间复杂度为O(n2)的排序是稳定的,而时间复杂度较好的是不稳定的。

时间: 2024-08-06 11:38:29

各类算法比较的相关文章

《BI那点儿事》数据挖掘各类算法——准确性验证

准确性验证示例1:——基于三国志11数据库 数据准备: 挖掘模型:依次为:Naive Bayes 算法.聚类分析算法.决策树算法.神经网络算法.逻辑回归算法.关联算法提升图: 依次排名为: 1. 神经网络算法(92.69% 0.99)2. 逻辑回归算法(92.39% 0.99)3. 决策树算法(91.19% 0.98)4. 关联算法(90.60% 0.98)5. 聚类分析算法(89.25% 0.96)6. Naive Bayes 算法(87.61 0.96) Naive Bayes算法——分类矩

[合集]各类算法的加解密方法

常见的加密算法: 对称加密(加密解密密钥相同):DES DES3 AES 非对称加密(分公钥私钥):RSA 信息摘要算法/签名算法:MD5 HMAC SHA 下面使用Python代码实现 # -*- coding:utf-8 -*- import base64 import rsa from Crypto.Cipher import AES from Crypto.PublicKey import RSA from pyDes import des, CBC, PAD_PKCS5 from Cr

常用的算法思想总结

对于计算机科学而言,算法是一个非常重要的概念.它是程序设计的灵魂,是将实际问题同解决该问题的计算机程序建立起联系的桥梁.接下来,我们来看看一些常用的算法思想. (一)穷举法思想 穷举法,又称为强力法.它是一种最为直接,实现最为简单,同时又最为耗时的一种解决实际问题的算法思想. 基本思想:在可能的解空间中穷举出每一种可能的解,并对每一个可能解进行判断,从中得到问题的答案. 使用穷举法思想解决实际问题,最关键的步骤是划定问题的解空间,并在该解空间中一一枚举每一个可能的解.这里有两点需要注意,一是解空

流行的机器学习算法概述

本文我们会概述一些流行的机器学习算法. 机器学习算法很多,并且它们自身又有很多延伸.因此,如何确定解决一个问题的最好算法是很困难的. 下面我们先说基于学习方式对算法的分类和算法之间的相似性,让大家有个整体意识:接着再陈述各类算法. 一.基于学习方式对算法的分类 根据如何处理经验.环境或者任何我们称之为输入的数据,算法分为不同种类.机器学习和人工智能课本通常先考虑算法可以适应的学习方式. 这里只讨论几个主要的学习风格或学习模型,并且有几个基本的例子.这种分类或者组织的方法很好,因为它迫使你去思考输

机器学习流行算法一览

原文:http://www.jdon.com/bigdata/a-tour-of-machine-learning-algorithms.html 这篇文章介绍几个最流行的机器学习算法.现在有很多机器学习算法,困难的是进行方法归类,这里我们介绍两种方法进行思考和分类这些算法.第一组算法是学习风格,第二组是在形式和功能上类似. 学习风格 一个算法基于问题建模有不同的方法,无论这个问题是基于经验或环境的交互,或者是基于我们需要输入的数据,学习风格是机器学习首先必须考虑的问题. 下面我们看看一些算法的

八种常用的排序算法(转)

下面要讲到的8种排序都属于内部排序,既在内存中完成,主要从理论原理方面来分析的.    插入排序 ①直接插入排序 例:六个数12 15 9 20  6 31 24 用直接插入排序,如下图: 思路: 第一步:从给出的六个数中,随便拿出一个数,比如12,形成一个有序的数据序列(一个数当然是有序的数据序列了,不看12之外的数,就当其他的数不存在): 第二步:从剩下的五个数中挑出一个数来,比如15,和刚才的12作比较,12<15,因此,放在12后面,形成数据序列12 15: 第三步:从剩下的四个数中挑出

联合人脸检测、校准算法介绍

联合人脸检测.校准算法介绍 人脸检测(detection)在opencv中早就有直接能拿来用的haar分类器,基于Viola-Jones算法.但是毕竟是老掉牙的技术,Precision/Recall曲线渣到不行,在实际工程中根本没法给boss看,作为MSRA脑残粉,这里介绍一种MSRA在14年的最新技术:下载   [ECCV 2014] Joint Cascade Face Detection and Alignment.这篇文章直接在30ms的时间里把detection和alignment都给

从软件工程的角度写机器学习3——主要监督学习算法的工程性分析

主要机器学习算法的工程适用性分析 前段时间AlphaGo跟李世石的大战及相关的深度学习的新闻刷了一遍又一遍的朋友圈.不过这件事情,也只是在机器学习的深度上进一步拓展,而机器学习的广度(也即工程化实践)上,仍然没有什么突破性的理论或实践,用的领域继续用,不用的领域依然不用. 工程性分析的作用 工程上的琐事 机器学习的使命是使计算机强大的运算能力和存储能力转化为推演能力,能转化是一方面,转化的效率则是另一方面.科研性质的AlphaGo,拥有近乎无限的计算资源,不用太考虑这方面的问题,但在我们实际的工

电子书 算法导论.pdf

有关算法的书中,有一些叙述非常严谨,但不够全面:另一些涉及了大量的题材,但又缺乏严谨性.<算法导论(原书第3版)/计算机科学丛书>将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受.全书各章自成体系,可以作为独立的学习单元:算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂:说明和解释力求浅显易懂,不失深度和数学严谨性. <算法导论(原书第3版)/计算机科学丛书>全书选材经典.内容丰富.结构合理.逻辑清晰,对本科生的数据结构课