- 博客(11)
- 问答 (1)
- 收藏
- 关注
原创 排序——基数(桶)排序
Vol8 排序:笔试和面试的重点.1.算法描述;2.实现;3.效率分析(时间复杂度,空间复杂度,稳定性) 稳定性:针对关键字相同的数据,排序前如果A在A"的前面,排序后还能保证A在A"的前面,则算法稳定,否则不稳定 稳定性判断依据:有没有跳跃的交换数据,没有则稳定 8.基数(桶)排序 代码思想:低位优先,将所有的数字,从低位(个位)开始到高位,依次进入相应的队列,再出,直到全部有序 时间复杂度:O(dn),d为位数 空间复杂度:O(n) 稳定性:稳定(没有数据交换) //获取最大数字的位数 static
2021-08-12 19:11:45
179
原创 排序——归并排序
Vol7 排序:笔试和面试的重点.1.算法描述;2.实现;3.效率分析(时间复杂度,空间复杂度,稳定性) 稳定性:针对关键字相同的数据,排序前如果A在A"的前面,排序后还能保证A在A"的前面,则算法稳定,否则不稳定 稳定性判断依据:有没有跳跃的交换数据,没有则稳定 7.归并排序 代码思想:将两段有序的数据合并成一段有序的数据,直到所有的数据有序 时间复杂度:O(nlogn) 空间复杂度:O(n) 稳定性:稳定(没有交换) //一次归并 //gap:归并段的长度 static void Merge(int
2021-08-12 19:07:09
132
原创 排序——堆排序
Vol6 排序:笔试和面试的重点.1.算法描述;2.实现;3.效率分析(时间复杂度,空间复杂度,稳定性) 稳定性:针对关键字相同的数据,排序前如果A在A"的前面,排序后还能保证A在A"的前面,则算法稳定,否则不稳定 稳定性判断依据:有没有跳跃的交换数据,没有则稳定 堆:分为大根堆和小根堆 大根堆:在这棵二叉树中所有的父都大于子 小根堆:在这棵二叉树中所有的父都小于子 代码思想:建大根堆,调整后将根和待排序的最后一个交换,重复 时间复杂度:O(nlogn) 空间复杂度:O(1) 稳定性:不稳定(跳跃)
2021-08-12 18:17:59
118
原创 排序——选择排序
Vol5 排序:笔试和面试的重点.1.算法描述;2.实现;3.效率分析(时间复杂度,空间复杂度,稳定性) 稳定性:针对关键字相同的数据,排序前如果A在A"的前面,排序后还能保证A在A"的前面,则算法稳定,否则不稳定 稳定性判断依据:有没有跳跃的交换数据,没有则稳定 5.选择排序 代码思想:每次从待排序中找到最小值和待排序的第一个交换 时间复杂度:O(n^2) 空间复杂度:O(1) 稳定性:不稳定 //例如(3,3,1,…) //选择法排序 void SelectSort(int *arr,int len
2021-08-12 18:10:22
142
原创 排序——快速排序
Vol4 排序:笔试和面试的重点.1.算法描述;2.实现;3.效率分析(时间复杂度,空间复杂度,稳定性) 稳定性:针对关键字相同的数据,排序前如果A在A"的前面,排序后还能保证A在A"的前面,则算法稳定,否则不稳定 稳定性判断依据:有没有跳跃的交换数据,没有则稳定 4.快速排序 设第一个数的下标为low,最后一个数的下标为high 代码思想:找一个基准(常用第一个数据) 将其存入tmp,1.从后往前找比基准小的数据往前移,high–,2.然后从前往后找比基准大的数据往后移,low++,重复1,2,当low
2021-08-12 17:46:40
142
原创 排序——冒泡排序
排序Vol3 排序:笔试和面试的重点.1.算法描述;2.实现;3.效率分析(时间复杂度,空间复杂度,稳定性) 稳定性:针对关键字相同的数据,排序前如果A在A"的前面,排序后还能保证A在A"的前面,则算法稳定,否则不稳定 稳定性判断依据:有没有跳跃的交换数据,没有则稳定 3.冒泡排序 代码思想:两两比较,大的往后,从当前数字开始,两两比较往后找,目的是把大的交换到后面 时间复杂度:O(n^2) 空间复杂度:O(1) 稳定性:稳定 //冒泡排序,两两比较,大的往后 void BubbleSort(int *
2021-08-12 17:29:24
128
原创 排序——希尔排序(shell)
排序Vol2 排序:笔试和面试的重点.1.算法描述;2.实现;3.效率分析(时间复杂度,空间复杂度,稳定性) 稳定性:针对关键字相同的数据,排序前如果A在A"的前面,排序后还能保证A在A"的前面,则算法稳定,否则不稳定 稳定性判断依据:有没有跳跃的交换数据,没有则稳定 2.希尔排序(Shell) 代码思想:间隔式的分组,利用插入排序让组内有序,然后缩小分组再排,直到组数为1,则全部有序 时间复杂度:O(n^1.3~ n^1.5) 空间复杂度:O(1) 稳定性:不稳定(跳跃) //一趟shell过程,ga
2021-08-12 17:24:28
118
原创 排序——(简单)直接插入排序
排序Vol1 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录排序Vol1前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例
2021-08-12 17:15:10
202
原创 字符串查找——KMP算法
字符串查找Vol2 面试重点 2.KMP算法 设主串下标为 i,子串下标为 j,皆初始为0 代码思想:i不回退,j退到该退的位置 时间复杂度:O(n+m) //设主串长度为n,子串长度为m //根据str计算其next数组,并返回 //这个函数是在计算-在子串中每个位置都失配的k值,并将k值存在next数组里 static int *GetNext(const char * str) { int len = strlen(str); int *next = (int *)malloc(len*sizeo
2021-08-12 16:04:28
201
原创 字符串查找——(简单)朴素查找算法
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar
2021-08-12 15:24:12
294
原创 C语言自我整理笔记Vol1
C语言自我整理笔记Vol1:进制+运算符+算法在这里插入代码片 1、进制 1.进制表示 (1)其它进制转十进制都是按权展开求和,比如十六进制 (2)二进制转八进制:二进制从右往左三个三个分组(因为8是2的3次方,故三个三个分组,同理16进制就是四个四个分组),然后按权展开求和 (3)十进制转其他进制:整数部分:基数除法,倒序取余。小数部分:基数乘法,顺序取整。 整数部分:基数除法,倒序取余 小数部分:基础乘法,顺序取整 (4)十进制转二进制:除了上面的方法外,还可以凑。 (5)十进制转八,十六进制
2021-08-04 00:06:25
86
空空如也
Linux下先fork后open,先open后fork,打印结果一样问题??
2021-09-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅