自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

没有对象也没有new方法的大白

if(you are watching){printf(

  • 博客(6)
  • 收藏
  • 关注

翻译 KMP算法

KMP是对字符串匹配优化的算法,要了解kmp算法由来应先了解传统的字符串匹配的工作机制传统的字符串匹配机制如下有两个字符串,上面那个是主串(T),下面那个是模式串(相当于关键字,下面称为p) 要在T中查找是否含有p,我们要做的工作自然是在T和p之间各自定义一个哨兵i和j,各自一位一位比对,如下图 如果i和j所指的值都相同,那么两者都往前走,若是不同,如下图 此时AE不等,...

2018-06-06 16:41:08 157

原创 快速排序

快速排序核心思想: 快速排序就是立一个数作为基准数,比他小的统统放左边,比他大的统统放在他的右边,接着通过递归,对它的左边序列,右边序列重复此过程,直到无数可分复杂度分析 最好情况:O(nlogn)最差情况:O(n^2)平均情况:O(nlogn)辅助空间:O(logn)~O(n)稳定性:不稳定图解如序列{6,1,2,7,9,3,4,5,10,8}6作为基准数,左右...

2018-06-06 12:37:25 144

原创 堆排序

堆排序核心思想: 前提知识:堆其实就是一种特殊的完全二叉树,分为大顶堆和小顶堆,大顶堆就是指父节点>=左右孩子结点,而左右孩子结点之间的大小关系随意,小顶堆反之堆排序核心:就是先把序列构建成大顶堆序(升序用大顶堆),然后大顶堆的根节点和最后一个结点交换位置,这样一来每交换一次就得到当前序列的最大值,并把它放在了最后面,接着把剩下的序列继续构建成大顶堆,重复上面动作,直到序列只剩一个...

2018-06-06 10:14:24 2111

原创 归并排序

归并排序核心思想: 是分治算法的典型应用,归并排序中的来说就两步分:把序列分成左右子序列,左右子序列又细分成各自的左右子序列,直到左右子序列都各只有一个(递归实现)治:对分好的子序列分别进行合并排序,这里排序的方法是定义两个哨兵,左哨兵指向左子序列的首元素,右哨兵指向右子序列的首元素,然后两者指向的值进行比较,谁小,则谁先存入新数组,直到左右序列都存完时间复杂度:最好最差均为O...

2018-06-05 22:03:04 124

原创 希尔排序

希尔排序核心思想:其实就是直接排序的升级版,把序列按照一定的增量分组,各小组之间用直接排序的方法排好序,接着把增量缩小,重复此过程,直到最后增量为1复杂度分析: 希尔排序是相隔某个增量的记录而组成的一个子序列,实现跳跃式的移动,使得效率提高迄今为止没找到最优的增长序列,但增量序列的最后一个值必须为1最好:O(n^3/2)最差:O(n^2)平均:O(nlogn)~O(n^2)时间...

2018-06-05 21:43:13 102

原创 三种简单排序算法---冒泡排序,简单选择排序,直接插入排序

冒泡排序核心思想:类似水泡一样,一趟比较,通过相邻元素的交换,冒出当前序列的最小值(最大值)到相应位置复杂度分析最好的情况:序列本身有序,只要进行n-1次比较,无需交换,时间复杂度为O(n)最差情况: 序列逆序,此时需要比较1+2+3+...(n-1)=n(n-1)/2次,并进行等数量级的交换辅助空间:O(1)综上,总的时间复杂度为O(n^2)稳定性:稳定void b...

2018-06-05 17:20:09 2271 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除