排序六:直接选择排序直接选择排序也是一种简单的排序方法,它的基本思想是:第一次从data[0]~data[n-1]中选取最小值,与data[0]交换,第二次从data[1]~data[n-1]中选取最小值,与data[1]交换,....,第i次从data[i-1]~data[n-1]中选取最小值,与...
分类:
其他好文 时间:
2014-08-30 16:19:49
阅读次数:
366
1 /* 2 fill 3 将[first, last) 内所有元素该填新值 4 */ 5 template 6 void fill (ForwardIterator first, ForwardIterator last, const T& value) { 7 fo...
分类:
其他好文 时间:
2014-08-28 21:04:06
阅读次数:
206
1.矩阵连乘问题的定义 1.1 给定 n 个矩阵的连乘积 A1A2...An,因为矩阵乘法满足结合律,所以计算矩阵的连乘积可以有不同的计算次序(这个次序的组合数满足卡特兰数),采用不同的计算次序计算的数乘次数也不相同。例如,A1A2A3,这三个矩阵的维数分别是10*100,100*5,和5*50,....
分类:
其他好文 时间:
2014-08-15 21:00:49
阅读次数:
362
1.动态规划和子序列 1.1 动态规划的特征: a)最优子结构,求问题的解必须获取子问题的最优解; b) 重叠子问题,使用原始的递归存在大量的重复计算。 1.2 子序列的概念: a)子序列中的元素都是原字符串中的元素; b)子序列中元素的排列顺序,与他们在原字符串中的顺序...
分类:
其他好文 时间:
2014-08-05 03:00:08
阅读次数:
177
一、对堆排序的相关了解
1、堆排序的运行时间是 O(nlogn)
;
2、定义:
堆heap是一棵具有以下属性的二叉树——
(1)它是一棵完全二叉树;
(2)每个结点大于或等于它的任意一个孩子。
备注:完全二叉树的定义——除了最后一层没填满以及最后一层的叶子都是偏左放置的,其他层都是满的二叉树!
3、二叉堆有两种:最大堆和最小堆。在堆排序中我...
分类:
其他好文 时间:
2014-08-01 00:11:00
阅读次数:
269
小猪的数据结构学习笔记(三)
上一节中我们见识了第一个数据结构——线性表中的顺序表;
当你把操作的代码自己写几遍就会有点感觉了,如果现在让你写顺序表的
插入算法,你能够想出大概的代码么?如果可以,那么你就可以进入新的章节了;
否则,还是回头看看吧!在本节,我们将迎来线性表的链式表示——单链表
单链表和顺序表有什么优势和劣势呢?单链表的头插法和尾插法有什么不同呢?等等
请大家跟随笔者的脚步来解析线性表中的单链表把!...
分类:
其他好文 时间:
2014-07-29 15:16:38
阅读次数:
248
1.1
算法思路——
该算法在数组中选定一个元素作为主元(一般选第一个),然后以这个主元为参考对象将数组分为两个部分,第一部分都是小于或者等于主元,第二部分都是大于或者等于主元。然后对第一和第二部分递归地使用快速排序算法,直到分到最小的小组为止。
1.2
时间复杂度——
在最差的情况下,要把n个元素的数组划分,需要n次比较和n次移动。假设用T(n)
来表示使用快速排序算法来排序n个元素...
分类:
其他好文 时间:
2014-07-24 10:36:04
阅读次数:
259
4、归并排序
4.1算法思想——
将数组分为两半,对每部分递归地应用归并排序,直到最后的子数组只包含一个元素。在每部分都排好序后,对它们进行合并。
4.2
时间复杂度——
假如用T(n)表示使用归并排序对n个元素构成的数组进行排序而使用的时间,用mergeTime来表示将两个子分组合并起来而花费的时间。那么
T(n)
= T(n/2)+T(n/2) + mergetime
而me...
分类:
其他好文 时间:
2014-07-22 22:38:33
阅读次数:
189
一、什么是优先队列?看一情景:我们去KTV唱歌,点歌的时候,能够发现所点的歌就是一个队列。这时候,一个MM突然不玩手机了想唱歌,于是她来点歌,而且想尽早轮到她。于是她能够选择“插歌”这个功能插到前排队列里。这样的具备能够插入优先权元素的队列,就叫优先队列。可是,这个定义不是严谨的。优先队列的基本模型...
分类:
其他好文 时间:
2014-06-30 22:41:39
阅读次数:
241