随笔分类 -  数据结构与算法

something about algorithm.
[转]链表与数组
摘要:数组与链表均是计算机中的主要存储结构。  数组定义时需要给出数组元素个数,系统在编译时为用户分配一块地址连续的存储空间  C++语言中可以用数组处理一组数据类型相同的数据,但不允许动态定义数组的大小,即在使用数组之前必须确定数组的大小。而在实际应用中,用户使用数组之前有时无法准确确定数组的大小,只能将数组定义成足够大小,这样数组中有些空间可能不被使用,从而造成内存空间的浪费。  链表是一种常见的数... 阅读全文
posted @ 2010-10-09 17:54 oyzway 阅读(1639) 评论(0) 推荐(0)
二叉树的深度优先遍历、广度优先遍历和非递归遍历
摘要:二叉树的遍历:D:访问根结点,L:遍历根结点的左子树,R:遍历根结点的右子树。给定一棵二叉树的前序遍历序列和中序遍历序列可以惟一确定一棵二叉树。二叉树的深度优先遍历的非递归的通用做法是采用栈,广度优先遍历的非递归的通用做法是采用队列。深度优先遍历二叉树。1. 中序遍历(LDR)的递归算法:若二叉树为空,则算法结束;否则: 中序遍历根结点的左子树; 访问根结点; 中序遍历根结点的右子树。2. 前序遍... 阅读全文
posted @ 2010-10-07 21:13 oyzway 阅读(33998) 评论(1) 推荐(6)
常用排序算法之性能比较
摘要:排序算法 最好时间 平均时间 最坏时间 辅助空间 稳定性直接插入排序 O(n)O(n^2) O(n^2) O(1) 稳定希尔排序 O(n^1.3) O(1)不稳定直接选择排序 O(n^2) O(n^2)O(n^2) O(1) 不稳定堆排序 O(n x lbn)O(n x lbn) O(n x lbn) O(1) 不稳定冒泡排序 O(n) O(n^2) O(n^2)O(1) 稳定快速排序 O(n x... 阅读全文
posted @ 2010-10-07 10:56 oyzway 阅读(887) 评论(0) 推荐(0)
常用排序算法之归并排序
摘要:归并排序主要是指二路归并排序。方法:设数组a中存放了n个数据元素,初始时把它们看成是n个长度为1的有序数组,然后从第一个子数组开始,把相邻的子数组两两合并,得到 n/2 的整数上界个长度为2的有序子数组(当n个奇数时,最后一个新的有序子数组的长度为1);对于这些有序子数组再两两合并;如此重复,直到得到一个长度为n的有序数组为止。C++实现:一个二路归并排序可看成多个二路归并排序的合成:Merge.... 阅读全文
posted @ 2010-10-07 10:46 oyzway 阅读(1189) 评论(1) 推荐(0)
常用排序算法之交换排序 ( 冒泡排序、快速排序 )
摘要:利用交换数据元素的位置进行排序的方法称为交换排序。常用的交换排序方法有冒泡排序和快速排序。快速排序是一种分区交换排序方法。冒泡排序方法:设数组a中存放了n个数据元素,循环进行n-1次如下的排序过程:第1次时,依次比较相邻两个数据元素 a[i].key 和 a[i+1].key ( i = 0,1,2,...,n-1 ),若为逆序,即 a[i].key > a[i+1].key ,则交换两个数... 阅读全文
posted @ 2010-10-06 23:56 oyzway 阅读(3241) 评论(0) 推荐(0)
常用排序算法之选择排序 ( 直接选择排序、堆排序 )
摘要:选择排序的方法是:每次从待排序的数据元素集合中选取关键字最小(或最大)的数据元素放到数据元素集合的最前(或最后),数据元素集合不断缩小,当数据元素集合为空时选择排序结束。常用的选择排序有直接选择排序和堆排序。直接选择排序方法:从待排序的数据元素集合中选取关键字最小的数据元素并将它与原始数据元素集合中的第一个数据元素交换位置;然后从不包括第一个位置上数据元素的集合选取关键字最小的数据元素并将它与原始... 阅读全文
posted @ 2010-10-06 20:19 oyzway 阅读(828) 评论(0) 推荐(0)
常用排序算法之插入排序 ( 直接插入排序、希尔排序 )
摘要:插入排序的方法是:从初始有序的子集合开始,不断地把新的数据元素插入到已排列有序子集合的合适位置上,使子集合中数据元素的个数不断增多,当子集合等于集合时,插入排序算法结束。常用的插入排序有直接插入排序和希尔排序。直接插入排序方法:顺序地把待排序的数据元素按其关键字值的大小插入到已排序数据元素子集合的适当位置。子集合的数据元素从只有一个数据元素开始逐次增大,当子集合大小最终和集合大小相同时排序完毕。C... 阅读全文
posted @ 2010-10-06 18:55 oyzway 阅读(1038) 评论(0) 推荐(0)
字符计数问题
摘要:字符计数问题这里有个字符串'hereisasampleofenglishtext'问里面各个字符出现次数是多少要求返回结果:(字典是无序的,所以只要结果正确,不要求顺序如此){'a':2,'':6,'e':5,'g':1,'f':1,'i':2,'h':2,'m':1,'l':2,'o':1,'n':1,'p':1,'s':3,'r':1,'t':2,'x':1}代码:代码更多解法参考:tieba... 阅读全文
posted @ 2010-09-14 22:23 oyzway 阅读(346) 评论(0) 推荐(0)
生成一个9*9乘法表__in Python
摘要:[代码]转:[代码] 阅读全文
posted @ 2010-09-14 21:06 oyzway 阅读(1205) 评论(0) 推荐(0)
Algorithm
摘要:If you want to be a good programmer, you just program ever day for two years, you will be an excellent programmer.If you want to be a world-class programmer, you can program every day for ten years, o... 阅读全文
posted @ 2010-09-12 23:06 oyzway 阅读(307) 评论(0) 推荐(0)