算法与数据结构
文章平均质量分 81
算法与数据结构学习
指针到处飞
努力成为抽象派
展开
-
【算法入门】快速排序
快速排序的核心思想是分而治之,也就是区域划分的问题,其解法也非常多,在这里用一个理解起来比较简单的方式来学习快速排序。我们需要将5之后的元素划分为两个区域,小于5的区域和大于5的区域, 这一步该怎么实现呢?现在我们借助 i 和 j 两个变量从数组的两端向中间进行遍历和交换,将左边区域大于5的元素与右边区域小于5的元素进行交换,在此过程中i不断向右遍历,j向左遍历,当 i 和 j 所在位置相同时即形成了两个区域, 左边的区域小于5,右边的区域大于5,再将5插入到合适的位置,此时我们完成原创 2022-08-21 08:53:55 · 130 阅读 · 1 评论 -
【算法入门系列】递归
递归(recursion)的定义是在定义一个过程或函数时出现调用本过程或本函数的成分。在递归中比较经典的一个例子就是:从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事!故事是什么呢?‘从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事!故事是什么呢’"…递归简单来说就是自己调用自己。原创 2022-08-20 22:03:31 · 173 阅读 · 0 评论 -
【算法入门系列】汉诺塔问题
依据上法,可解决n -1个盘子从A杆移到B杆(第一步)或从B杆移到C杆(第三步)问题。3、2,直到移动1个盘的操作,而移动一个盘的操作是可以直接完成的。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。假设有n片,移动次数是f(n).显然f(1)=1,f(2)=3,f(3)=7,且f(k+1)=2*f(k)+1。原创 2022-08-20 21:32:46 · 358 阅读 · 0 评论 -
【算法入门系列】折半插入排序
折半插入排序其实是在直接插入排序的基础上,结合了二分查找法的思想,顺序的二分查找替代了直接插入排序中遍历查找的过程,从而更快的能够确定待插入元素的位置,但是由于移动次数并没有发生改变,所以两者的时间复杂度相同。折半插入排序是稳定的,其时间复杂度为O(n2)。写在结尾: 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。刚开始写博客,文章中难免会有纰漏,如有不足,欢迎各位批评指点。CSDN21天学习挑战赛。...原创 2022-08-14 01:00:00 · 275 阅读 · 2 评论 -
【算法入门系列】冒泡排序
冒泡排序的基本思路是最后面的元素开始,对每两个相邻的关键字进行比较,且使关键字较小的元素换至关键字较大的元素之前,使得一趟冒泡排序后关键字最小的元素到达最上端, 接着,在剩下的元素中找关键字次小的元素,并把它换到第二个位置上,遍历n-1趟之后整个数组变为有序的。写在结尾: 冒泡排序是我认识的第一个算法,大约是两年前的事了,当时学的时候还是懵懵懂懂,在经历了这么久的沉淀之后我惊奇的发现我竟然还没有忘,仔细想想原因应该是自己对算法的理解程度加深导致的。输入:5,4,3,2,1。输出:1,2,3,4,5。...原创 2022-08-13 17:41:48 · 295 阅读 · 2 评论 -
【算法入门系列】二分查找
折半查找又叫做二分查找, 是一种效率较高的查找算法,但是前提条件是要求线性表是有序的- 折半查找的基本思路是首先确定表的中间位置,将关键字与该值进行比较- - 如果该值等于关键字则返回该值的索引 - 如果该值小于关键字则在中间位置的左边继续二分查找 - 如果该值大于关键字则在中间位置的右边继续二分查找- 还有另外一种思路就是递归,因为如果中间值不等于key值,程序就要一直进行二分查找直至找到...原创 2022-08-10 11:14:23 · 527 阅读 · 1 评论 -
【算法入门系列-直接选择排序】
直接选择排序的基本思想是从无序区中找出最小元素与无序区第一个元素进行互换,这样原来无序区第一个位置成为有序区,经历从0到n-1无序区(每次遍历之后有序区的元素总是小于无序区,因此当无序区只剩一个元素后即为最大值,不需要进行遍历)的遍历后即可排好。...原创 2022-08-05 10:46:27 · 127 阅读 · 1 评论 -
【算法入门系列-插入排序】
插入排序的基本思路是每次将一个待排序的元素按照关键字大小插入到前面已经排好顺序的表中,直至元素全部插入。原创 2022-08-05 07:30:52 · 79 阅读 · 0 评论 -
【算法入门系列-顺序查找】
顺序查找是一种最简单的查找方法, 其思路是从表的一端向表的另一端进行遍历并与所要查找的值(key)进行比较(表中无重复元素),如果表中元素与key相同,则返回该元素在表中的位置,若表中没有该元素则查找失败。...原创 2022-08-01 17:37:57 · 150 阅读 · 0 评论