摘要:
KMP算法是一种优秀的字符串匹配算法,字符串匹配的常规算法是一步一步进行移位和比较操作,直至找到完全相匹配的字符串。 下面通过一个例子,为大家仔细说明KMP算法的使用和思路: 问题: 在字符串“DEABCDABABCDABCDABDE”字符串中,匹配字符串"ABCDABD". 算法思路: KMP算法 阅读全文
摘要:
从大一接触C语言开始,世界就以一种全新的方式向我展开了。 说起来,大一刚开始接触C语言的时候,完全处于懵逼状态,根本不知道这玩意是啥,毕竟我们河南的孩子在高考之前基本上就只有一个目标:考上大学,整天都是语数外、物化生……根本不知道编程是什么意思,由于从来没有接触过,上课听讲就像听天书一样,直到第一次 阅读全文
2018年3月21日
摘要:
直接插入排序:把N哥待排序的元素看成一个有序表和一个无序表。起始,有序表中只包含一个元素,无序表中包含N-1个元素,排序过程中每次从无序表中取出第一个元素,将他插入到有序表中的适当位置,使之成为新的有序表,重复N-1次则完成排序。 图解: 代码: 阅读全文
摘要:
选择排序也是一种较为简单的排序算法,算法时间复杂度为O(N²)。 选择排序的思想是:从未排序的数列中找到最小的元素,将其存放在对头,再从其余的元素中找到最小的元素,放到已排序数列的末尾,依次遍历。 图解: 代码: 阅读全文
摘要:
冒泡排序法是我们接触到的最简单的一种排序算法,如果说让你写一个冒泡排序都写不出来,可能你真的需要去静下心来,好好地学习一些简单的算法。 冒泡排序是遍历若干次要排序的数列,每次遍历都会从前往后依次比较相邻的两个数,每次遍历结束都会将未排序的部分的最大或最小值放在未排序队列的队尾,话不多说,让我们代码上 阅读全文
2018年3月16日
摘要:
首先是KMP算法的主体,可能存在一定的代码冗余,但是是完全按照我上篇文章所写的内容写的,可能和网上的代码不太一样,但更好理解。下面插入生成部分匹配值的函数。 这个函数代码冗余量有点多,需要改进,但目前没有想到修改方法。 阅读全文
2018年3月14日
摘要:
快速排序算法采用分治法的策略,首先在数列中随便选出一个数作为基准,将所有比基准小的数放在基准的前面,所有比基准大的数放在基准的后面,一趟走完之后,基准的位置已经完全确认了,数据被分成了两部分,在将这两部分递归进行上面的操作,即完成了快速排序的实现。 阅读全文
2018年3月12日
摘要:
快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有 阅读全文
2018年2月5日
摘要:
首先说明,这不是一篇鸡汤文,所述所写都是我自己的亲身经历,只做纪念和共勉! 从小时候开始,估计我们每个人都被问过“你的梦想是什么?”,小时候的我们可能完全不知道什么是梦想,大概就是自己以后想要成为的人吧,那个时候的我们又傻又天真,张口闭口就是“我想当个科学家”,不知道大家是怎么回答这个问题的,反正我 阅读全文
2018年1月15日
摘要:
C#网络编程学习 --多线程编程技术 对于 挂起 、 睡眠 与 阻塞 的理解 我用三个既生动形象,又贴近生活的例子来表达我对于这三个概念的理解: 挂起: “写作业写累了,需要休息一会儿,便上床睡觉,但并没有定闹钟,直到老妈把我叫醒,我才起床,继续写作业” 其中“写作业”就是指我们线程中的程序执行,“ 阅读全文