
算法
安野
这个作者很懒,什么都没留下…
展开
-
【算法】插入排序
介绍 思路:从头遍历,从当前位置向前寻找小于当前指向元素的数据。若有就将当前元素交换。遍历直到尾部结束。 成本:数据的起始顺序。 特点:取决于数据的顺序。要是顺序的就没有需要改变的数据。要是完全逆序就要全部重新排序。 适用:部分有序的数据。 思考 快速记忆:从少到多达到有序 代码 代码源于书籍《算法》 //插入排序 void sort(int* a, int length) ...原创 2020-04-24 13:22:41 · 168 阅读 · 0 评论 -
【算法】选择排序
介绍 思路:找到数组中最小的元素,然后与头指针指向的元素进行交换。头指针顺序从第一个开始向后移动。 成本:比较次数 特点:运行时间只和数量相关。数据移动次数最少。 适用:希望少交换的数据 心得 快速记忆:排序时,当前指向的前面全部数据都是有序的。 代码 // 选择排序 void sort(int* a, int length) { for (int i...原创 2020-04-23 13:39:07 · 149 阅读 · 0 评论 -
【算法】归并排序
介绍 思路:将两个有序的数组归并到一个更大的有序数组中。 原理:按照一定规则,将数组不断分割到最小单位进行排序,然后将结果归并。直到合并回原本数组长度。 特性:需要使用额外的空间。 思想:分治思想(分割大问题为一个个小问题,通过解决所有的小问题从而解决大问题) 实现:自顶向下,自底向上 环境:适用数据量较大的数据 建议 接下来的算法会涉及递归,建议一边看示意图一边自己实现下流程,对照着学习会记忆更...原创 2020-04-22 23:25:24 · 156 阅读 · 0 评论