排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。 本文将依次介绍上述八大排序算法。 算法 ...
分类:
编程语言 时间:
2019-03-14 01:06:02
阅读次数:
185
题目: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 示例 2: 这种方法由于使用了Arrays.sot(int[] a)方法,时间复杂度是O(n3),不符 ...
分类:
其他好文 时间:
2019-03-04 17:25:54
阅读次数:
176
定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。 示例 1: 示例 2: 进阶: 给出时间复杂度为O(n*sizeof(integer))的解答非常容易。但你可以在线性时间O(n)内用一趟扫描做到吗? 要求算法的空间复 ...
分类:
其他好文 时间:
2019-03-04 09:55:00
阅读次数:
179
Kosaraju算法 适用范围及时间复杂度 线性时间算法,找一个有向图的强连通分量(分量中所有点都是连通的)。 算法原理 首先有一个定义,名曰反图。何为反图?即将图中所有边反向操作。 上图样例即为一对反图。在整副图中,有三个强连通分量,即:1 2 5,3,4.如果把这副图所有边反向后,得到的同样是三 ...
分类:
编程语言 时间:
2019-03-02 10:42:06
阅读次数:
633
莫比乌斯函数 定义 莫比乌斯函数$\mu(n)$,当$n=1$时,$\mu(n)=1$;当$n 1$时,设$n$的唯一分解式为$n=p_1^{c_1}\cdots p_k^{c_k}$,则$\mu(n)$定义为 $\mu(n)= \begin{cases} ( 1)^k,c_1=c_2=\cdots ...
分类:
其他好文 时间:
2019-02-28 00:54:31
阅读次数:
186
1 #include <ctime> 2 #include <iostream> 3 using namespace std; 4 5 template <class Type> 6 void Swap(Type &x,Type &y); 7 8 inline int Random(int x, i ...
分类:
编程语言 时间:
2019-02-26 01:12:20
阅读次数:
242
题目 题目描述:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现三次。找出那个只出现一次的元素。 说明:你的算法应该具有线性时间的复杂度。你可以不使用额外的空间来实现吗? 思路 题目要求线性复杂度,一般的算法做不到,不难想到用位运算。但怎么进行位运算,比较难想到。 ^ 相当于除去 ...
分类:
其他好文 时间:
2019-02-03 12:34:37
阅读次数:
233
给定字符串S和子串T。 定义n=|s|,m=|T|,extend[i]=S[i~n]与T的最长公公前缀长度。请在线性时间内求出所有的extend。 这道题继承上面KMP的思路,我们可以对T的每一个前缀做一次KMP,如果在某个i位置出现,就拿此时前缀长度更新i的extend数组。但是这样复杂度就是O( ...
分类:
其他好文 时间:
2019-01-26 17:13:30
阅读次数:
191
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? ...
分类:
其他好文 时间:
2019-01-26 11:47:51
阅读次数:
169
一道让你拍案叫绝的算法题 这是一道看完答案会觉得很简单,但做之前很难想到答案的题目!!! 不信? Let us go ! 题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来 ...
分类:
编程语言 时间:
2019-01-18 15:10:13
阅读次数:
144