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

摘要:问题:w1、w2、w3、w4、w5,5个元素将会按顺序入栈,求出栈顺序有多少种情况。先写一下结论方便记忆:1个元素:1种2个元素:2种3个元素:5种4个元素:14种5个元素:42种简单的分析过程如下:n个数据依次入栈,出栈顺序种数的递推公式如下:F(n)=∑(F(n-1-k)*Fk);其中k从0到n... 阅读全文
posted @ 2015-09-20 12:39 管言 阅读(7473) 评论(0) 推荐(0)
摘要:单词的数目可以由空格出现次数决定(连续的若干个空格作为出现一次空格;一行开头的空格不统计在内)。若测出某一个字符为非空格,而它的前面的字符是空格,则表示“新的单词开始了”,此时是单词计数器加1,;若当前字符为为非空格,而其前面的也是非空格,则意味着仍是那个单词的继续,count值不应累加。前面的一个... 阅读全文
posted @ 2015-07-24 16:10 管言 阅读(1933) 评论(0) 推荐(0)
摘要:快速排序是一种非常高效的排序算法,它采用“分而治之”的思想,把大的拆分成小的,小的再拆分为更小的。其原理如下:对一组给定的记录,通过一趟排序后,将原序列分为两部分,其中前一部分的所有数据均比后一部分的所有的记录小,然后依次对前后两部分的记录进行快速排序,递归该过程,直到序列中的所有记录均有序为止。快... 阅读全文
posted @ 2015-07-24 13:37 管言 阅读(370) 评论(0) 推荐(0)
摘要:有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序算法。插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序。插入排序的Java实现:... 阅读全文
posted @ 2015-07-22 14:49 管言 阅读(370) 评论(0) 推荐(0)
摘要:选择排序:比如在一个长度为N的无序数组中,在第一趟遍历N个数据,找出其中最小的数值与第一个元素交换,第二趟遍历剩下的N-1个数据,找出其中最小的数值与第二个元素交换......第N-1趟遍历剩下的2个数据,找出其中最小的数值与第N-1个元素交换,至此选择排序完成。选择排序的Java实现: 1 pac... 阅读全文
posted @ 2015-07-22 13:44 管言 阅读(278) 评论(0) 推荐(0)
摘要:冒泡排序算法的运作如下:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。冒泡排序的... 阅读全文
posted @ 2015-07-22 13:08 管言 阅读(348) 评论(0) 推荐(1)