最近开始学习排序。排序的作用不必多说,目前所见的比较坑的题不是用高精度运算就是用排序。正如Gromah大神所说:“不会排序学什么信息学竞赛啊!”于是在此总结一下,以便下一步学习。以下是目前学会的几个较简单的排序。
参考资料:
《信息学竞赛一本通》、《算法竞赛入门经典》、以及一个排序示意软件及其代码的所在网站:
http://panthema.net/2013/sound-of-s...
分类:
编程语言 时间:
2014-12-12 13:21:36
阅读次数:
268
最近开始学习排序。排序的作用不必多说,目前所见的比较坑的题不是用高精度运算就是用排序。正如Gromah大神所说:“不会排序学什么信息学竞赛啊!”于是在此总结一下,以便下一步学习。以下是目前学会的几个较简单的排序。参考资料:《信息学竞赛一本通》、《算法竞赛入门经典》、以及一个排序示意软件及其代码的.....
分类:
编程语言 时间:
2014-12-06 18:11:36
阅读次数:
276
一直以来学习排序算法, 都没有在链表排序上下太多功夫,因为用得不多。最近看STL源码,才发现,原来即使是链表,也能有时间复杂度为O(nlogn)的算法,大大出乎我的意料之外,一般就能想到个插入排序。下面的代码就是按照源码写出的(去掉了模板增加可读性),注意forward_list是C++11新加的单...
分类:
编程语言 时间:
2014-11-20 21:48:34
阅读次数:
602
首先,上脑图。1、为什么要学习排序算法?这是算法学习的基础,经典的排序算法有着很广泛的用途,一遍遍的被人所使用。而且,在面试找工作的时候,数据结构中的排序算法,也是一个很重要的基本功,经常会被用人单位拿来出题目。2、如何学习排序算法?第一步是理解排序算法的原理,这也是最重要的一步。第二步就是看经典的...
分类:
编程语言 时间:
2014-11-13 14:37:54
阅读次数:
275
LambdaMART是Learning To Rank的其中一个算法,适用于许多排序场景。它是微软Chris Burges大神的成果,最近几年非常火,屡次现身于各种机器学习大赛中,Yahoo! Learning to Rank Challenge比赛中夺冠队伍用的就是这个模型,据说Bing和Facebook使用的也是这个模型。
本文先简单介绍LambdaMART模型的组成部分,然后介绍与该模型相关的其他几个模型:RankNet、LambdaRank,接着重点介绍LambdaMART的原理,然后介绍Lambd...
分类:
其他好文 时间:
2014-11-02 18:14:11
阅读次数:
450
排序是将一组对象按照一定的规则重新排列的过程。即使目前完全可以使用标准库中的排序函数,学习排序算法仍然有着较大意义: 排序算法的学习可以帮助你全面了解比较算法性能的方法; 类似的技术上能有效解决其他类型的问题; 排序算法通常是我们解决问题的第一步; 更重要的是这些算法都很经典,优雅和高效。排序在商业...
分类:
其他好文 时间:
2014-09-21 20:41:01
阅读次数:
282
1.插入排序
#include
#include
#define M 100
int main(void)
{
int i, j, n;
int a[M] = {0};
printf("input n:");
scanf("%d", &n);
printf("input a:");
for(i = 1; i
scanf("%d", &a[i]);
...
分类:
编程语言 时间:
2014-06-20 11:00:54
阅读次数:
230
快速排序:
该方法的基本思想是:
1.先从数列中取出一个数作为基准数。
2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。
3.再对左右区间重复第二步,直到各区间只有一个数。
快速排序进一步挖掘就是挖坑和分治,这种方法比较实用简单:
对挖坑填数进行总结
1.i =L; j = R; 将基准数挖出形成第一个坑a[i]。
2.j--由后向前找比它小的数,找到...
分类:
编程语言 时间:
2014-06-15 18:54:10
阅读次数:
324
堆排序使用最大堆。堆排序:将初始序列构造成最大堆; 第一趟排序,将堆顶元素 A[0] 和堆底元素 A[n-1]进行交换,然后调用AdjustDown对堆顶元素进行向下调整,使剩余的前n-1个元素还是堆。然后使堆顶元素与A[n-2]交换,在进行向下调整。直到最后只剩下堆顶元素。...
分类:
其他好文 时间:
2014-05-11 07:37:51
阅读次数:
304