数据结构与算法
言方行圆娄知县
脚踏实地 仰望天空
展开
-
算法_随机算法1_入门引例(根据随机数求圆周率pi)
我是野猪。计算机的使用使我们的计算更加便利,也为一些问题的解决有了新的途径。对于圆周率的求取在计算机中我们可以模拟这样的一个行为,根据点数获取π值,具体的原理如图所示原创 2017-11-28 00:36:58 · 3405 阅读 · 0 评论 -
数据结构与算法_约瑟夫环问题(Josephus)详解
约瑟夫(Josephus)环问题来源是这样的:据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus和他的朋友并不想原创 2017-12-28 17:16:55 · 6658 阅读 · 1 评论 -
数据结构与算法_链表2_双向链表
双向链表结点和单向链表结点的区别在于,多了一个指向前驱的指针。当这个节点是第一个节点时,前驱指针是一个空指针。单向链表的结构如下图1所示:图1 单向链表结构图双向链表的结构如下图2所示:图2 双向链表结构图显然通过以上2个图的对比,可以看出链表两种形式的特点。双向链表显然我们在创建的时候需要永久维护的是first和last信息,要是链表不为空,first原创 2017-12-26 23:02:25 · 1142 阅读 · 2 评论 -
数据结构与算法_链表1_单链表
链表可能是继数组之后第二种使用最为广泛的数据结构。链表有单链表、双端链表、有序链表、双向链表。本文讲的就是链表中的基本即单链表,来了解链表的基本操作和概念。通过下图简单了解链表的概念:其特点举个简单例子,如图把33这个元素插入在42之前,数组实现的话要把42开始之后为元素全部后移一位,然后把33插到指定位置,然而链表则可以随便的把他分配在某一个位置,然后我们通过原创 2017-12-21 17:39:43 · 547 阅读 · 1 评论 -
数据结构与算法_插入排序
我是野猪。排序: 将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程叫做排序。对数据进行排序有可能是检索的一个初始步骤。二分查找比线性查找要快的多,然而它只能应用于有序的数据。其次排序非常重要也可能非常耗时。冒泡排序、选择排序和插入排序都是简单排序,算法时间复杂度都是O(n^2)。插入排序:每一步都将一个待排的数据按其大小插入到已经排序的数据中的适当原创 2017-12-13 16:39:44 · 304 阅读 · 0 评论 -
数据结构与算法_选择排序
我是野猪。排序: 将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程叫做排序。对数据进行排序有可能是检索的一个初始步骤。二分查找比线性查找要快的多,然而它只能应用于有序的数据。其次排序非常重要也可能非常耗时。冒泡排序、选择排序和插入排序都是简单排序,算法时间复杂度都是O(n^2)。选择排序:第1次循环遍历范围是[1,n]选出最小的,与最左边[原创 2017-12-13 16:10:26 · 298 阅读 · 0 评论 -
数据结构与算法_冒泡排序
我是野猪。排序: 将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程叫做排序。对数据进行排序有可能是检索的一个初始步骤。二分查找比线性查找要快的多,然而它只能应用于有序的数据。其次排序非常重要也可能非常耗时。冒泡排序、选择排序和插入排序都是简单排序,算法时间复杂度都是O(n^2)。冒泡排序是在各大教科书排序篇章中牢牢占据首位,我一直想这是为啥,是因为它效率高?那肯定不能够,原创 2017-12-13 10:19:11 · 508 阅读 · 0 评论 -
数据结构之栈(以字符反转和分隔符匹配为例子)
我是野猪。栈的概念:栈作为一种数据结构,是一种只能在一端插入和删除操作的特殊线性表。它按照新进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹数据。关键点:1.先入后出 2.访问限制,在特定的时刻,只允许一个元素被读取或删除(栈顶的元素)。3.栈操作:栈空、栈满、弹栈、入栈等栈相关知识:1.数据结构栈和队列更多的是作为程序员的工具来运原创 2017-12-11 23:51:30 · 562 阅读 · 0 评论 -
数据结构之数组(以此为例引入数据结构基本概念)
我是野猪。想在开始介绍之前,说下自己一步步开始自学数据结构与算法的思想,首先为啥要学?通常情况下,精心选择合适的数据结构可以带来更高的运行或存储效率;其次如何去学?我认为刚开始学习数据结构(或者说算法)类似于射箭,“射艺无其他窍门儿,手熟是第一秘诀,你多练几次,自然能领悟其中道理”,又或者说像是学骑自行车,刚开始都比较吃力,只要坚持不懈的学、多多练习自然能像一个常人那样骑车子,至于以后的进阶才原创 2017-12-11 01:56:14 · 530 阅读 · 1 评论 -
数据结构与算法_链表3_约瑟夫环问题(链表实现)
注明:本文与文章数据结构与算法_约瑟夫环问题大体一致,之所以标志着链表3,是因为认为这个圈子的场景从模拟过程上讲是典型的双向循环链表的过程,即本文中第三种方法。约瑟夫(Josephus)环问题来源是这样的:据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了原创 2017-12-27 23:37:40 · 2914 阅读 · 0 评论