C
唯(~平安
博客小萌新,请多指教
展开
-
第九章:排序算法:希尔排序&&基数排序
一:希尔排序1.介绍.希尔排序是插入排序的改进版,主要是为了解决当较小的数据出现在待排数组后一个一个向前插入这样比较多的循环次数。这个排序引入的步长的概念(step),用不断缩小step将数组分组,每次缩小为原来的一半,直到最后一次步长为一时,整个数组做了插入排序。2.图片流程如下:3.步骤3.1.初始化步长为元素个数的一半3.2.开始循环,循环至步长为03.3开始做插入排序,具体在代码中详解4.代码区//希尔排序void shellSort(int *a, int len){原创 2021-03-03 20:53:08 · 326 阅读 · 1 评论 -
第八章:排序算法:选择排序&&插入排序
一.选择排序1.介绍选择排序是一个经典直观的算法,它是从待排序列中挑选最小的元素插入到已序数组的最后。2.图片3.方法&&步骤3.1定义一个最小数据下标3.2循环嵌套,起点下标作为已序数组的最后一个加一,(待排数组的开头)3.3数据交换4.代码//打印函数void print(int *a, int len){ for (int i = 0; i < len; i++) { printf("%d ", a[i]); }}//选择排序void原创 2021-03-02 21:44:42 · 212 阅读 · 0 评论 -
第七章:寻路算法:A星寻路
1.介绍1.1.A星寻路是在广度寻路的基础上更加智能。1.2.它是以周围八格中f值最小的作为下一步,一直到终点。这里引入了一个代价的概念。代价:f = g +hf:代价总值g:起点到当前点走过的路线价值h:当前点到终点的直线待评估值2.看图3.步骤创建一个八叉树,开始吧起点当做树根,吧周围八格能走的路存入临时动态数组,下一次在数组中选择f值最小的格子作为下一步,直到终点。4.代码区#include<iostream>#include<stdlib.h>#i原创 2021-03-01 21:04:38 · 545 阅读 · 0 评论 -
寻路算法:广度寻路
1.介绍广度寻路算法是上,左,下,右一起试探,把试探过能走的点用以四叉树的方式保存起来,直到试探到终点。广度相比于深度,可以找到从起点到终点的最佳路径废话不多说,看图2.图图中1表示起点,2表示终点3.步骤&&方法:1.如上图,这里引入一个层的概念,例如起点(1,9)就是第一层,随之试探出第二层…2.这里可以使用C++的vector,把第一层的节点存入vector中,在进行循环,在之后吧第一层的每一个节点试探出的节点存放到vect中,直到试探出终点循环结束。4.代码#原创 2021-02-28 19:39:12 · 554 阅读 · 0 评论 -
一起学算法,第四章:深度寻路算法
废话不多说,直接开搞1.看图先看图让起点上的小人从起点一直到终点,看图看不了多少直接看方法2.方法1.走的方法1.1按照上,左,下,右逆时针方向行走1.2总不能回头走吧,所以将走过的路径标为已走过(,下次就不会走了2.遇到什么不能走2.1有障碍(图中有颜色部分)2.2死胡同(图中箭头所指),在这里不管是上方已经被标记已走过,还是左,下,右都是障碍。所以我们需要利用栈后入先出的原理,将走过的路径入栈,遇到这种情况就出栈直到岔路口。~详细过程在代码注释中,所以下面请看代码3.代码首先原创 2021-02-23 15:34:40 · 185 阅读 · 0 评论 -
第三章:二分查找
今天要学习的是二分查找。1.介绍二分查找跟归并与快排一样都采用了分治思想,它是在一个有序数组中查找数据。2.方法将一个数组的下标除以2,得到的是中间数,中间数与要查找的数据进行对比(注意这里是有序数组),如果要查找的数据比中间数大就在中间数的右边,如果小就在左边。一直循环,直到找到要查找的数据或者数组查完。3.下面看图在图中,我要查找的是44,起初m是4,left是0,right是9第一次:m所对应的数据小于查找的数据,那我就在右边找,这时候left是5,right不变,m是7第二次:m所原创 2021-02-21 17:57:13 · 177 阅读 · 4 评论 -
新手上路,一起学算法。第二:归并排序
今天来和大家一起学习归并排序啦~废话不多说直接开搞!1.归并排序介绍归并排序也是属于经典算法之一,它采用的是分治思想(分治思想:将大的问题,转换成简单的,小的问题来解决)。2.方法它与合并算法不同的是,它是一个杂乱无章的数组。我们可以采用递归的思想将这个数组每次按两次分,直到每个子序列只有一个元素为止,因为在这里只有一个元素的序列可以必定是一个有序数组。最后在采用合并排序依次合并为有序数组。3.图片区分析图如下:具体流程图如下:4.具体代码如下#include<stdio.h&原创 2021-02-20 21:40:44 · 189 阅读 · 0 评论 -
新手上路,一起学算法,第一:合并排序
初来乍到,请大家多多关照,请让我先自我介绍下,我是一个18岁的编程小猿,还在校,发现写博客也可以提升自我能力,并且我在学习算法,我会将我每天所学习的算法写在博客中,分享我学算法的过程,也希望能提升自己并且也能帮到很多编程萌新。~这是我第一次写博客,可能会有很多的不足,还望大家看完文章后可以在评论区指指我的毛病。第一章:合并排序1.介绍:合并排序可以将两个有序数组合并为一个有序数组,因为这个前提,所以这个排序也是很少用的,不过,下一章我会为大家介绍归并排序,这个排序是要结合合并排序的,不过这是下一章的内原创 2021-02-19 22:15:58 · 176 阅读 · 0 评论