![](https://img-blog.csdnimg.cn/3cf188014b21495f8dae4a48114410f9.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
文章平均质量分 81
我所总结的大学本科算法
Ritchie_Zeng
欢迎你来到我的星球!
展开
-
算法 - 递归实现汉诺塔(The Tower of Hanoi)
今天接触到了一个非常有意思的游戏,名字叫做汉诺塔(Tower of Hanoi),小时候没有玩过这个益智游戏,所以今天利用代码把这个益智游戏实现一下。(Tower of Hanoi),又称,是一个源于古老传说的。创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。原创 2022-10-19 13:54:55 · 3308 阅读 · 0 评论 -
算法 - 初识动态规划(Dynamic Programming)
此时分析过程我们已经基本清楚,现在把分析出来的规律写成方程:注:OPT(i - 2)和ar[i]中的两个i不一样!前者表示的是第几个元素,后者表示的是数组中元素的下标。原创 2022-09-24 11:46:19 · 762 阅读 · 0 评论 -
算法 - 计数排序(Counting_Sort)
在开始写计数排序的代码之前,我们先对计数排序的定义、算法思想、排序过程做一个简单的了解和梳理。计数排序(Counting_Sort)是一个非基于比较形式的排序算法,它也是一种以牺牲空间换取时间的过程。计数排序利用数组的有序性将元素依次存储进对应下标的数组空间中,然后再依次输出。计数排序(Counting_Sort)是一种非基于比较形式的算法,在之前所实现过的冒泡排序、选择排序、插入排序等排序算法都是基于比较的算法,而计数排序则是利用了数组天然的有序性对数据进行归类划分,然后再对临时数组空间进行遍历并输出。原创 2022-09-17 18:30:59 · 1111 阅读 · 0 评论 -
算法 - 并行排序算法之双调排序(Bitonic_Sort)
并行计算是一个相对比较庞大的知识体系,他被应用在很多的地方,例如硬件和计算机结构的设计上,这里我只是把并行计算当作对学习双调排序的前提进行了解,不会用太多的笔墨。并行计算是相对于串行计算来讲的,在知乎上看见了一个特别通俗易懂的例子:我们上小学每次考完试的时候可能会遇到的两种情况:情况一:老师说,来,这次考试的所有卷子我批改完了,班长拿下去给每个人一发吧。情况二:老师说,来,这次考试的所有卷子我批改完了,第一排每个人都过来我给你们一叠卷子你们给咱班娃一发。........................原创 2022-08-29 12:56:23 · 4245 阅读 · 1 评论 -
算法 - 鸡尾酒排序(CocktailShaker_sort)
鸡尾酒排序就是双向冒泡排序,也叫搅拌排序、涟漪排序。我们知道冒泡排序本质上是利用下标对序列中不符合前小后大的两个元素进行交换并循环此过程直到将序列中所有的元素排序完成,在整个排序的过程中,冒泡排序的每一次过程都是从下标为0的第一个元素开始进行排序操作,那么如果我们像折半查找那样定义左边界和右边界,每次排序都在左边界和右边界中轮流进行,结束每次的排序过程后左边界和右边界均缩进一位,直到整个序列排序完成,这样是不是就比单向的冒泡排序的效率提高了很多。......原创 2022-08-22 20:13:42 · 1444 阅读 · 2 评论 -
算法 - 重点 - 堆排序(Heap_sort)
在严蔚敏的《数据结构(C语言版)》一书中对数据结构是这样定义的:数据结构是相互之间存在一种或多种特定关系的数据元素的集合。在任何问题中,数据元素都不是孤立存在的,而是在它们之间存在着某种关系,这种数据元素之间的关系称为结构(Structure)。注意,这里的堆不是计算机内存结构中的堆区,与堆区(Heap Area)没有关系!........................原创 2022-08-10 15:44:00 · 865 阅读 · 0 评论 -
算法 - 归并排序(Merge_sort)
在写归并排序的代码之前,我们先对归并排序的定义和排序原理进行梳理。是一类不同的排序方法。“归并”的含义是将两个或者两个以上的有序表组合成一个新的有序表。利用归并的思想容易实现排序,且这种实现方法已为读者熟悉,无论是顺序存储结构还是链表存储结构,都可以在O(m+n)的时间量级上实现。归并排序也是一个与插入排序、交换排序、选择排序不同的一类排序方法。归并排序是一个基于分治法思想的算法,拿两个已经有序的序列重新组合成一个有序的序列。..................原创 2022-08-09 19:40:57 · 7607 阅读 · 0 评论 -
算法- C语言实现侏儒(地精)排序(Gnome_sort)
Gnome_sort,是一个和插入排序算法类似,但是过程又和冒泡排序十分相像的算法,这个算法和插入排序相似在两者都是将元素移动到合适的位置,并通过一系列交换完成。我觉得这个算法厉害在整个算法结构只有一层循环,在大部分数据都是有序的情况下,是可以在最大限度减少交换的回合数的。..................原创 2022-08-08 01:09:22 · 991 阅读 · 0 评论 -
算法 - 快速排序(Quick_sort)
快速排序(Quick_sort)的特点就是:序列越乱越快,越有序越慢。最优情况:O(nlogn)每趟排序数据元素都能被平均分配成两个部分,形成一个完美的二叉树。最坏情况:O()也就是原序列相对最有序的情况,形成的树只有左子树和右子树,比较次数为:(n - 1) + (n - 2) + (n - 3)+……+ 1 = n * (n - 1)/2空间复杂度:O(1)..................原创 2022-08-05 00:50:35 · 7822 阅读 · 0 评论 -
算法 - C语言实现希尔排序(Shell_sort)
插入排序相比较于冒泡排序和选择排序的优点在于时间复杂度的降低,冒泡排序和选择排序的时间复杂度均为O(n。)~O(n)之间的,所以从时间复杂度上面来看,插入排序总体的效率是要优于冒泡排序的。但是如果我们使用插入排序的话,效率就会大大提高,只需要一趟即可将元素0放在最前面。中讲到过,插入排序是在序列中已经有一部分序列是有序的所进行的排序,希尔排序相当于是对插入排序的优化,在我的上一篇文章。),但是插入排序的时间复杂度是介于O(n。在插入排序中越有序,效率越高。........................原创 2022-07-26 20:41:58 · 1844 阅读 · 2 评论 -
算法 - C语言实现插入排序(Insert_sort)
插入排序就是在序列有一部分已经有序的前提下不断地进行元素的调换,最终达成将序列从小到大排序完成的结果。如图,因为是从第五个元素才不满足小在前大在后的规则,所以第二层for循环一直要执行到j=5,才开始进行交换工作,一共交换了3次,第四次进行检查时全部合格,输出最终序列,与在纸上分析的完全一样。关于第二层循环的循环操作为什么是j--的解释j从j=0开始执行,循环操作就是每次进行交换操作所生成新的序列后,需要遍历的元素就会少一个。如图,成功的将系统随机生成的12个整数进行了从小到大的排序。...........原创 2022-07-25 03:15:35 · 6847 阅读 · 0 评论 -
算法 - 奇偶排序(Odd Even_Sort)
思路:在数组元素和元素个数已经给定的前提下,定义i和j这两个整型值,使用for循环让i从数组开始的数值从前向后进行扫描,让j从数组最后的元素从后向前进行扫描,并且i在扫描的过程中,只要当i所经过的数值对2进行取余不等于零的情况下(此数值是奇数)对i进行累加;j在扫描的过程中,经过的数值对2取余为零的情况下(此数值是偶数)对j进行累加。且扫描的大前提就是i和j是不重合的。首先要明确的问题是:如何在给定数组元素已经存在的前提下对数组进行奇数在前偶数在后排序?原创 2022-06-14 23:26:42 · 1082 阅读 · 0 评论 -
算法 - 冒泡排序(Bubble_ Sort)
在总结冒泡排序前:先从头开始,对冒泡排序(BubbleSort)进行一个系统性了解:冒泡排序法,又称交换排序法,是从观察水中的气泡变化构思而成的,原理是从第一个元素开始,比较相邻元素的大小,如果大小顺序不对,则进行两个数据的调换,就好像气泡从水中逐渐上升到水面上一样。经过这样的扫描,就可以一次接着一次的排序,直到完成所有元素的排序工作。如图,我使用5个元素:14,11,25,18,44来进行冒泡排序法的演示:为了更直观的体现冒泡多次排序,再换一组数据进行排序 55,23,87,62,16:原理已经基本清楚,原创 2022-06-07 22:55:56 · 2506 阅读 · 0 评论 -
算法 - 选择排序(Select_Sort)
如图,我输入十个元素:10,9,8,7,6,5,4,3,2,1: 输出完成如图所示,选择排序执行完成,十个元素排序完成。原创 2022-06-07 23:36:47 · 154 阅读 · 0 评论 -
算法 - 折半查找(Binary_Search)
如图,我查找数组中存在的元素10: 输出完成返回值为10,表示数组中存在元素10,并输出了10. 输出完成返回值为-1,表示数组中不存在元素11.原创 2022-06-09 19:00:08 · 171 阅读 · 0 评论