摘要:
描述:农夫 John 建造了一座很长的畜栏,它包括N (2 <= N <= 100,000)个隔间,这些小隔间依次编号为x1,...,xN (0 <= xi <= 1,000,000,000).但是,John的C (2 <= C <= N)头牛们并不喜欢这种布局,而且几头牛放在一个隔间里,他们就要发 阅读全文
摘要:
快速幂:分治方式的实现其实就是利用递归的原理实现。Python算法实现: 1 def pow(a, b): 2 if b == 0: 3 return 1 4 if b % 2 != 0: 5 return a * pow(a, b - 1) 6 else: 7 t = pow(a, b / 2) 阅读全文
摘要:
在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。比如:74386,逆序为:74,73,76,43,86,所以逆序数为:51.直接计数法虽然简单直观,但是其时间复杂度是 O(n^2),如果数据量很大,程序会崩 阅读全文
摘要:
描述给定一个数组包含n个元素,统计前m大的数并且把这m个数从大到小输出。输入第一行包含一个整数n,表示数组的大小。n < 100000。第二行包含n个整数,表示数组的元素,整数之间以一个空格分开。每个整数的绝对值不超过100000000。第三行包含一个整数m。m < n。输出从大到小输出前m大的数, 阅读全文
摘要:
输入n ( n<= 100,000)个整数,找出其中的两个数,它们之和等于整数m(假定肯定有解)。题中所有整数都能用 int 表示解法1:用两重循环,枚举所有的取数方法,复杂度是O(n 2 )的。for(int i = 0;i < n-1; ++i) for(int j = i + 1; j < n 阅读全文
摘要:
二分查找:是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每 阅读全文
摘要:
拓扑排序:对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列, 阅读全文
摘要:
希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序。核心思想:希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减 阅读全文
摘要:
计数排序优化版:引用:https://www.cnblogs.com/xiaochuan94/p/11198610.html基础版能够解决一般的情况,但是它有一个缺陷,那就是存在空间浪费的问题。比如一组数据{101,109,108,102,110,107,103},其中最大值为110,按照基础版的思 阅读全文