博舍

十大经典比较算法 ai十大经典算法排名榜最新

十大经典比较算法

罗德里格斯(Rodrigues)旋转向量转旋转矩阵

Greary:是不是漏了个cos?

Levenberg–Marquardt算法

yiyu521125:你好,问一下你文章中贴的图片来自哪,想学习学习

泊松分布,指数分布介绍以及其联系与区别

weixin_57859961:就是ctrlc加ctrlv。十篇里面有九篇都是同样的内容

Lucy-Richardson算法

YANGN1:现在感觉入行传统行业跟考古一样。

奇异值分解的物理意义

qq_41285308:太牛了博主

数据挖掘十大经典算法

数据挖掘基本任务:分类与预测、聚类分析、关联规则、时序模式、偏差检测、智能推荐等,帮助企业提取数据中蕴含的商业价值,提高企业的竞争力。DM过程:

    a目标定义(任务理解、指标确定)

      b数据采集(建模抽样、质量把控、实时采集)

      c数据整理(数据探索、数据清洗、数据变换)

      d构建模型(模式发现、构建模型、验证模型)

      e模型评价(设定评价标准、多模型对比、模型优化)

      f模型发布(模型部署、模型重构)

十大DM算法:

十大经典算法

0、算法概述0.1算法分类

十种常见排序算法可以分为两大类:

非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。

线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。 

0.2算法复杂度

0.3相关概念

稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。

不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面。

时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。

空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函数。 

1、冒泡排序(BubbleSort)

冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 

1.1算法描述比较相邻的元素。如果第一个比第二个大,就交换它们两个;对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;针对所有的元素重复以上的步骤,除了最后一个;重复步骤1~3,直到排序完成。

1.2动图演示

1.3代码实现12345678910111213functionbubbleSort(arr){    var len=arr.length;    for (var i=0;inum;j-=gap)                nums[j+gap]=nums[j];            nums[j+gap]=num;        }    }}4.4算法分析

希尔排序的核心在于间隔序列的设定。既可以提前设定好间隔序列,也可以动态的定义间隔序列。动态定义间隔序列的算法是《算法(第4版)》的合著者RobertSedgewick提出的。

5、归并排序(MergeSort)

归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(DivideandConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。 

5.1算法描述把长度为n的输入序列分成两个长度为n/2的子序列;对这两个子序列分别采用归并排序;将两个排序好的子序列合并成一个最终的排序序列。5.2动图演示

5.3代码实现123456789101112131415161718192021222324252627282930functionmergeSort(arr){ //采用自上而下的递归方法    var len=arr.length;    if (len0&&right.length>0){        if (left[0]arr[largest]){        largest=right;    }     if (largest!=i){        swap(arr,i,largest);        heapify(arr,largest);    }} functionswap(arr,i,j){    var temp=arr[i];    arr[i]=arr[j];    arr[j]=temp;} functionheapSort(arr){    buildMaxHeap(arr);     for (var i=arr.length-1;i>0;i--){        swap(arr,0,i);        len--;        heapify(arr,0);    }    return arr;}8、计数排序(CountingSort)

计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中。作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数。

8.1算法描述找出待排序的数组中最大和最小的元素;统计数组中每个值为i的元素出现的次数,存入数组C的第i项;对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加);反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放一个元素就将C(i)减去1。8.2动图演示

8.3代码实现12345678910111213141516171819202122functioncountingSort(arr,maxValue){    var bucket=new Array(maxValue+1),        sortedIndex=0;        arrLen=arr.length,        bucketLen=maxValue+1;     for (var i=0;i

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇