数据结构与算法
西厂程序员
热爱互联网,没事搞搞机,学学CS。
展开
-
常用查找、排序算法的性能总结
话说这些性能总结也就对考试(例如考研、面试刷题)有用,算法最终的目的还是理解和运用,所以大家看看看看一下就行了,最终还是靠理解为主! 一、查找算法 其中二叉树查找的标红的性能有待考究;哈希查找的查找长度网上也有,看起来太复杂(哈希表(等概率情况下)查找成功与查找不成功的平均查找长度) 二、排序算法 其中“初始序列”指复杂度是否和初始序列有关,其实如果发现最好最差平均复杂度一样,就是...原创 2018-01-04 17:02:01 · 1736 阅读 · 0 评论 -
常用排序算法原理总结
前面有篇文章总结了性能,同时强调了算法原理才是最重要的,仅仅记住一些性能指标的数据,是没有用的。这篇文章主要以较“精炼简单”但是又“详细啰嗦”的语言来描述算法实现的细节过程!注意:可能不适合初学者看,初学者应该先看算法书籍以及实现的源码,然后再参考下文叙述来帮助理解算法实际的原理!本篇没有实例代码,请参看《大话数据结构》的C源码和个人的github的java源码链接!(《大话数据结构》java语言原创 2018-01-05 15:57:01 · 455 阅读 · 0 评论 -
常用查找算法原理总结
一、静态查找表1、顺序查找表:设置界(0~n),然后从头比到尾,有则返回! 顺序查找表plus:把原来的界(0~n)改为设置哨兵R[0]或者R[n],当比较到R[0](从后往前比)或者R[n](从前往后比)还没有相等的时候,就是没有!否则,有则返回!这样省略了每次都要判断是否到了界点的步骤! 2、有序查找表:“最基本”的是折半查找!首先和R[m]=R[(0+n)/2]比较,如果原创 2018-01-06 21:23:21 · 591 阅读 · 0 评论 -
KMP字符串匹配
我们假设有上图字符串S:abcaab和T:abcababcaabab字符匹配需求,左边是朴素算法:即从T的第0位和分别和S的1~n位开始比较,相同则用黄色标注,不同则用红色标注,如果遇到不同,然后T的第0位和下一位开始重新来过开始第二轮比较。但是,在这个比较的过程中,我们会发现两种情况: 1. 0~3位分别相同,即T[0]=S[0],T[1]=S[1],T[2]=S[2]...原创 2017-07-13 16:43:44 · 633 阅读 · 0 评论 -
链表常用操作算法集合
注:1.本参考例程包含基础的单链表操作方法共计9种,全部以单独函数形式封装,便于直接调用和移植。2.本参考例程源代码来源于“传智播客C语言基础教程”,本人只是稍微修改便于测试结果展示和网友移植使用。3.如图为实际测试结果。由于上传资源暂未审核通过并显示,所以资源下载链接将在评论区显示!...原创 2015-12-06 11:43:38 · 915 阅读 · 1 评论 -
单链表逆置算法图解
链表的各种操作逻辑性较强,初学者如果不能很好的理解链表的概念和结构,往往会“蒙圈”!而对于初学者,链表逆置更是比较难以理解!-------------------------------------------------------------------- 首先说明一下链表逆置的概念:链表逆置不同于数组逆置,其首节点需要保持不变!这是因为链表的输出是以头节点指向首节点,然后根据各...原创 2015-12-05 21:12:52 · 22816 阅读 · 3 评论