基本原理
冒泡排序(Bubble Sort,台湾另外一种译名为:泡沫排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
这样说还不是很明白,先看张图:
算法步骤:
1)比较相邻的...
分类:
编程语言 时间:
2014-08-20 16:27:12
阅读次数:
261
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其...
分类:
编程语言 时间:
2014-08-20 14:13:03
阅读次数:
269
希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。
希尔排序是基于插入排序的以下两点性质而提出改进方法的:
插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率但插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位...
分类:
编程语言 时间:
2014-08-19 14:34:44
阅读次数:
303
排序算法(Sorting algorithm):将一串数据依照特定排序方式进行排列的一种算法...
分类:
编程语言 时间:
2014-08-18 20:37:23
阅读次数:
366
一、栈ADT是what?1、定义 栈,是限制插入和删除都只能在一个位置上进行的表。2、图示 3、栈的基本功能(1)是否为空(2)进栈(3)出栈(4)清空(5)取栈顶二、栈的链表实现
分类:
其他好文 时间:
2014-08-17 16:43:42
阅读次数:
183
做算法分析的时候经常用到各种时间复杂度如O(n), O(logn), O(nlogn), O(n^2), ... 它们之间到底有多大的差别呢?下面这张图是一个直观的表达:可见,各个常用的时间复杂度之间都存在着巨大的差异。从O(nlogn)到O(n),从O(n)到O(logn),都是性能上的巨大飞跃。...
分类:
其他好文 时间:
2014-08-14 13:23:38
阅读次数:
164
思路:这题和wikioi 1306一样,也都是求的不同子串的个数,但是wikioi 时间比较长,然后用Trie树就过了。但是我用那个代码提交这题的时候就WA了,比较晕……因为这题有多组样例,所以超了点时间。
所以这题当然就是用后缀数组做的啦!
算法分析:
每个子串一定是某个后缀的前缀,那么原问题等价于求所有后缀之间的不相同的前缀的个数。如果所有的后缀按照suffix(sa[1]),suffi...
分类:
其他好文 时间:
2014-08-13 19:09:17
阅读次数:
221
背景:假定你有一雄一雌一对刚出生的兔子,它们在长到一个月大小时开始交配,在第二月结束时,雌兔子产下另一对兔子,过了一个月后它们也开始繁殖,如此这般持续下去。每只雌兔在开始繁殖时每月都产下一对兔子,假定没有兔子死亡,在一年后总共会有多少对兔子?在一月底,最初的一对兔子交配,但是还只有1对兔子;在二月底...
分类:
其他好文 时间:
2014-08-12 00:12:13
阅读次数:
281
35.(矩阵)求一个矩阵中最大的二维矩阵(元素和最大).如:1 2 0 3 42 3 4 5 11 1 5 3 0中最大的是:4 55 3要求:(1)写出算法;(2)分析时间复杂度;(3)用 C 写出关键代码早上灭小题!/*35.(矩阵)求一个矩阵中最大的二维矩阵(元素和最大).如:1 2 0 3 ...
分类:
其他好文 时间:
2014-08-11 09:58:41
阅读次数:
178
算法分析与设计:搜索(素数环)时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte 总提交:178 测试通过:35描述将1-n这n个数摆成一个环,要求相邻的两个数的和是一个素数,编程输出所有可能的解。输入包括多组数据,每组1个数n。nusin...
分类:
其他好文 时间:
2014-08-10 18:21:00
阅读次数:
293