数据结构
Betty2017
这个作者很懒,什么都没留下…
展开
-
内部排序总结
一、内部排序1、分类(1)插入类排序:直接插入排序、希尔排序(2)交换类排序:冒泡排序、快速排序(3)选择类排序:简单选择排序、堆排序(4)归并类排序:归并排序(4)分配类排序:基数排序可能每种里面还有很多,我把一些比较常见我要分析和实现的列上去了,大家可以自己再添加;二、内部排序分析和实现1、直接插入排序实现原理:(1)将一个需要排序的数组分为原创 2017-11-17 14:03:30 · 275 阅读 · 0 评论 -
顺序表及其应用
一、顺序表定义:顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。结构:将表中元素一个接一个的存入一组连续的存储单元中,这种存储结构是顺序结构。采用顺序存储结构的线性表简称为“ 顺序表”。顺序表的存储特点是原创 2017-11-17 14:05:02 · 1901 阅读 · 0 评论 -
字符串查找——朴素查找和kmp算法
kmp算法是由三位大神容忍不了普通字符串查找方法的时间效率达到了O(n*m),因而发明的算法。它让字符串的查找达到了O(n+m)。我们可以先看看普通方法解决这个问题,为了让大家更加理解题目,我把题目的意思再表达得更清楚。 题目:我们设字符串的主串名为str,字符串的子串名为sub,我们现在想要在主串str中查找是否存在子串sub。 一、朴素查找算法原创 2017-11-17 14:07:13 · 686 阅读 · 0 评论 -
kmp算法的优化
下面我们来说一下代码的优化。大家先看图: 我们新设置了一个nextval数组,nextval[j]表示优化后的在j失配,它应该退回的位置。我们原来求解j回退位置k时,其实还是存在无用功。如果p[j]=p[k],而我们在j位置发生了失配,j回退到k的位置,结果它的字符和j一样,那就无意义啊,因为它肯定还是会失配的,只有不一样的时候,才有可能匹配成原创 2017-11-17 14:11:44 · 382 阅读 · 0 评论 -
各种排序的使用场景总结
一、各种排序的时空复杂度二、使用场景1、当输入规模n比较小的时候,应该使用选择排序或者时插入排序(插入排序通常会比选择排序少一些比较的次数,但是选择排序会比插入排序少挪动的次数);2、当输入的数据基本有序的时候,应该使用插入排序或者是随机的快速排序。3、当n较大,要求速度较快的时候可以使用nlgn的算法比如:堆排序、快速排序和归并排序。堆排序的空间复杂度为lO(1)、而快速排序的空间复杂度是O(l...原创 2018-04-08 15:38:49 · 6881 阅读 · 3 评论