上一页 1 ··· 29 30 31 32 33 34 35 36 37 ··· 58 下一页
摘要: Exchang是一个标记,比较一遍的时候如果没有发生任何交换就可以结束了。 冒泡排序就是模拟泡泡从湖底到湖面的过程。 添加冒泡排序: 注意:冒泡排序是稳定的 希尔做了这样一个观察:在一个序列基本有序的情况下,插入排序效率非常高。对于冒泡排序,我们做了标记,如果序列已经是基本有序的,冒泡排序效率也会提 阅读全文
posted @ 2018-09-20 22:53 周伯通789 阅读(271) 评论(0) 推荐(0)
摘要: 添加选择排序: 测试程序如下: 结果如下: 给Select添加一个参数,支持从小到大排序和从大到小排序: 注意:选择排序是不稳定的。 添加插入排序操作: 注意:插入排序是稳定的排序 选择排序的时间复杂度是O(n*n) 插入排序的时间复杂度是O(n*n) 小结: 阅读全文
posted @ 2018-09-20 22:33 周伯通789 阅读(186) 评论(0) 推荐(0)
摘要: 问题: 多关键字排序是否比单关键字排序更复杂? 对于多关键字排序,只需要在比较操作时同时考虑多个关键字即可。 和单关键字排序本质相同,并不会复杂。 多关键字比较示例程序: 结果输出1。 这意味着我们的多关键字比较就定义好了。 Sort的构造函数、拷贝构造函数、赋值操作符全部为私有的,也就是我们不能创 阅读全文
posted @ 2018-09-20 21:43 周伯通789 阅读(208) 评论(0) 推荐(0)
摘要: g函数返回后,f函数对应的栈中的数据没有任何变化,这就是回溯算法的核心。 可以这样思考,先逆序打印从第二个节点开始的子表,最后再将第一个节点打印出来。 逆序打印栈的增长与退栈示意图: 退栈打印的过程就是回溯的过程。 递归调用的时候只是先将参数保存在栈上,这时这个参数还没有用到,只是让指针指向了相应的 阅读全文
posted @ 2018-09-19 23:41 周伯通789 阅读(244) 评论(0) 推荐(0)
摘要: 将大问题分解,先将第一个节点拿出来,将其它的节点看成一个整体。 实验2: e始终指向字符串的开头,用来打印,s用来控制交换。 一开始,a和a交换,全排列b、c。 然后,a和b交换,全排列a、c。 然后交换a和c,全排列b、a。 如果两个字符是一样的,就没有必要交换,否则全排列有重复的现象。 阅读全文
posted @ 2018-09-19 22:42 周伯通789 阅读(249) 评论(0) 推荐(0)
摘要: 代码改进: 小结: 阅读全文
posted @ 2018-09-19 21:50 周伯通789 阅读(165) 评论(0) 推荐(0)
摘要: 思考: replace图解: 程序完善: DTString.h: DTString.cpp: 小结: 阅读全文
posted @ 2018-09-19 00:04 周伯通789 阅读(486) 评论(0) 推荐(0)
摘要: 问题: 右移的位数和目标串没有多大的关系,和子串有关系。 已匹配的字符数现在已经有了,部分匹配值还没有。 前六位匹配成功就去查找PMT中的第六位。 现在的任务就是求得部分匹配表。 问题:怎么得到部分匹配表呢? 前缀集合和后缀集合取最长的交集就是部分匹配值。 例如,上图中前缀和后缀没有交集,部分匹配值 阅读全文
posted @ 2018-09-18 22:14 周伯通789 阅读(376) 评论(1) 推荐(0)
摘要: 插入: 去掉字符串两端的空白: DTString.h更新如下: DTString.cpp更新如下: 测试程序如下: 运行结果如下: 阅读全文
posted @ 2018-09-17 23:33 周伯通789 阅读(217) 评论(0) 推荐(0)
摘要: c++中用STL封装了字符串类,但是这是不通用的。 实现字符串类,就是用面向对象的方式封装C语言对字符串的操作。 添加DTString.h文件: 添加DTString.cpp文件: 测试程序如下: 运行结果如下: 小结: 阅读全文
posted @ 2018-09-17 21:56 周伯通789 阅读(220) 评论(0) 推荐(0)
上一页 1 ··· 29 30 31 32 33 34 35 36 37 ··· 58 下一页