- 博客(5)
- 资源 (15)
- 收藏
- 关注
原创 【算法导论】基数排序
基数排序时间复杂度:O(n).基本思路:两个数比较大小,我们的直观感觉是先比较高位,若相同则比较低位。但是这样做需要记录额外的数据,浪费空间。而基数排序则是先比较低位,再比较高位。通过各个位的比较进行排序,如果数组元素最大有N位,则总共需要N次排序。注意:按位排序必须是稳定排序,所以在这我选择了计数排序。具体操作见下图:具体实现如下:#include#includ
2013-07-31 17:05:58 1772
原创 【算法导论】第i小的元素
第i小的元素 时间复杂度:n. 基本思想:和快速排序的思想相似,也是对数组进行递归划分,但是有所差别的是,快速排序会递归处理划分的两边,而随机化的选择算法只选择一边。 具体步骤为:首先,随机选择一个数组元素作为主元,从而将数组分解为两个子数组,并得到主元在元素中的位置q,假设较小子数组元素的个数为k-1;然后比较i与k的大小,来确定下一次递归选择哪一边
2013-07-31 15:46:31 1582
原创 【算法导论】最大值和最小值
最大最小值时间复杂度:3*floor(n/2)基本思想:成对地处理元素。先将一对输入元素相互比较,然后把较小的与当前最小值比较,较大的与当前最大值比较,因此每两个元素比较三次。注意分情况:当n为奇数时,将最大值和最小值都设置为第一个元素值;当n为偶数时,将前两个元素较大的元素设置为最大值,较小的设置为最小值。其具体实现如下:
2013-07-31 12:15:59 2367
原创 【算法导论】计数排序
计数排序比较排序:通过元素间的比较对序列进行排序的算法称为比较排序。常见的比较排序算法有:冒泡排序法、插入排序法、合并排序法、快速排序法,堆排序法等等。任何比较排序法在最坏情况下的时间复杂度为nlgn。因此,合并排序和堆排序是渐进最优的。非比较排序:用非比较的方法来进行排序的算法。常见的非比较排序算法有:计数排序法、基数排序法、桶排序法。它们都是以线性时间运行的。由于是非比较的,因
2013-07-30 16:30:32 1912
原创 【算法导论】快速排序
快速排序快速排序的最坏运行时间为n2,虽然这最坏情况的时间复杂度比较大,但快速排序通常是用于排序的最佳实用选择,这是因为其平均性能相当好,平均时间复杂度为nlgn,并且nlgn中的隐含常数因子很小。另外,它能够进行就地排序,因此在虚拟内存中也能较好的运行。快速排序算法的性能:其运行时间与划分是否对称有关,而是否对称与主元的选取有关。从渐进的意义上讲,如果对称,就和合并的算法一样快,如果不对
2013-07-30 14:25:17 2750
多种插值算法Matlab实现--数学建模
2015-01-22
数学建模 常用算法matlab实现
2013-08-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人