
重拾算法-系统学习
算法小菜鸟阿健
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
查找算法-折半查找(二分查找)
二分查找算法,又叫折半查找算法,顾名思义,从其名字可见该排序算法运用了二分法进行查找。所谓二分就是将一个数组分成两部分,因为每次都是二分所以又叫折半查找,个人觉得折半很形象。原创 2022-10-28 13:05:38 · 1486 阅读 · 0 评论 -
排序算法-总结(c语言)
时间复杂度我看网上说法不一也不一定准确。稳定性是指例如6 8 9 0 5 5 7 这种有重复数字的数组进行排序时能不能分辨哪个5排在前面。这十种排序算法并没有都完全学习,但是大概内部分为了几种分类想法,1.冒泡排序,选择排序,堆排序,这三种排序方法比较相像,其具体思想就是找到最大值然后将最大值(最小值)放在特定的位置,然后再寻找剩余数中的最大值最小值。2.桶排序,计数排序,基数排序,这三种算法是比较相像,其具体思想都超脱于一种桶的构型。就是将符合一定条件的数放在一起。但对桶的使用方法上有明显差异。原创 2022-10-19 16:13:51 · 953 阅读 · 0 评论 -
排序算法-基数排序(C语言)
基数排序有两种思路,从高位往低位排,和从低位往高位排,本文主要是从低位往高位排。总之就是先将个位进行排序,将每个数字的个位数放入对应的桶中,然后依次返还给数组,那么个位上的数字就已经按照从大到小排好了,然后再排十位上的数字,依次排到数组中最大数的最大数位那么所有的数字就排好了。原创 2022-10-18 13:47:37 · 1131 阅读 · 0 评论 -
排序算法-堆排序(C语言版)
堆排序是一种基于完全二叉树结构的一种排序算法,其整体思想很简单,就是构建完全二叉树,但是这里需要引入堆的概念。如下大顶堆:每个结点的值都大于或等于其左右孩子结点的值小顶堆:每个结点的值都小于或等于其左右孩子结点的值大概就是下图的样子 细心的同学可能已经发现了,堆只保证根节点与子节点的关系,并不保证子节点与子节点的关系。是不是很疑惑这种数据构型怎么能用于排序,其实很简单,我们只需要利用节点特性然后不停的重构就可以达到排序的目的。只需要不停的将根节点就是最上面的那个节点的数据不停的取出,然后重构堆,就可以实现排原创 2022-10-16 14:15:07 · 1304 阅读 · 3 评论 -
排序算法-归并排序(C语言)
归并排序是一种基于分治思想的排序算法,归并排序主要有两个操作,分别是归和并这两种操作,归就是递归,并就是合并的意思。归并排序一共有两种实现方法,一种是自下而上递归,一种是自上而下递归。原创 2022-10-14 15:27:55 · 1071 阅读 · 0 评论 -
排序算法-希尔排序(c语言)
以数组 5 2 10 4 7 1 3 8 6 9 为例,数组长度为10,及在这一步一共分为5组。对比间隔为5,然后5->1,2->3,10->8,4->6,7->9 进行比较然后相应的交换位置。2.现在进行第二趟排序,5/2=2,现在对比间隔为2,一共分为5组,则1->8,2->4 .... 依次类推。3.现在进行第三轮,2/2=1,现在对比间隔为1,一共分为10组,则 1->2,2->7 ...... 依次类推。总之这个算法就是从数组长度确定的对比间隔,然后每一轮除2一直除到为1这一轮就排好了。原创 2022-10-12 15:25:15 · 499 阅读 · 0 评论 -
排序算法-插入排序(C语言)
大概意思是先将数组的第一个数据当做已经排好了的数据,后面的所有数据都还没有排好顺序,然后依次遍历,找到对应的位置直接交换位置即可。光说估计比较抽象,上图。插入排序是一个很有意思的排序算法,就跟斗地主的整理卡牌的过程差不多。原创 2022-10-11 08:36:19 · 258 阅读 · 0 评论 -
排序算法-冒泡排序
这里引用了一种新的计算数组长度的方式,我本想用strlen计算数组长度,但是发现计算不出来,因为strlen只能计算字符串数组的长度,那么int型数组就需要用到sizeof这个方式计算,sizeof能计算变量或者数据类型所占用的内存(以字节为单位)。用sizeof计算数组长度时,sizeof不关心数组内部存储的是什么类型的数据。其中“sizeof(a)“计算了整个数组a占据了多少内存(字节为单位),”sizeof(a[0])“计算了数组中第一个元素所占多少字节,两者相除就是数组的长度。原创 2022-10-09 17:12:47 · 186 阅读 · 0 评论 -
排序算法-计数排序(C语言)
假设每个数字是一个桶,我们每读取到一个数就往桶里放一个东西,当读取完成有数据的桶里就有东西,没有数据的桶原创 2022-10-05 10:40:29 · 824 阅读 · 0 评论 -
排序-快排算法(C语言)
其基本思想就是从基准数右边找到一个比基准输小的,然后从基准数左边找到一个比基准熟大的然后交换位置,最终使得基准数的左边全部是比基准数小的,右边全是比基准数大的。(咳咳,我也不会,我感觉也不会用到,做算法比赛时起码不会遇见,遇见了手打冒泡也行。排序double和char型时只需要将cmp参数里的类型换一下即可,以char为例。C语言快排函数包含在stdlib.h头文件中,函数一共有四个参数。然后通过递归操作就会使其按序排列,但是此算法缺点是不稳定。原创 2022-10-03 16:55:11 · 233 阅读 · 0 评论