algorithm
YaoYuan9323
电气自动化专业毕业的程序员
展开
-
将n向上取整到大于它的最小的8(2^n)的倍数。
最近在学习c++ memory pool,读《c++ 应用程序性能优化》一书时,发现了一个算法: (num + (b - 1)) & ~(b-1)。其中num是要向上取整的数,b为2^n。对于这种优秀对的思想一定要记录一下。 ...原创 2019-03-08 10:23:53 · 810 阅读 · 0 评论 -
查找——二分法查找(Java语言描述)
二分法查找最基本的要求是数据序列必须升序。定位中间位置并获取到位于该位置的元素值,通过比较中间值与被查找值的大小来重新定义查找范围(beigin~mid 或 mid+1~end)。不断重复之前的操作。直到查到或范围缩小到0。 package yao.sort; import org.junit.Test; public class HalfFind { public static voi...原创 2019-06-13 19:36:07 · 195 阅读 · 0 评论 -
基本排序之插入排序(Python语言实现)
一、插入排序原理 学习插入排序时,查阅不少前辈的博文比如此文。再此也记录一下自己对插入排序的理解:将待排元素插入进已有序列中。已排序列在变长,待排序列在缩小。插入是这样步骤,取出一个数,与前面一个数比较,该数较小,那就将前面数往后挪一个位置。继续往前找,直至比前一个数大或者到达已排好的列开始为止,将取出的数放入。再取出一个数按前操作,直到所有待排数据全部插入为止。 二、编码 #!usr/b...原创 2019-06-09 14:10:48 · 178 阅读 · 0 评论 -
平衡二叉树——旋转与插入(Java 语言描述)
对平衡二叉树的研究,大概已有半年之久。最近才算是对它有所领悟。因为网上好多博文对其讲解的都很好,在此就不再详述,只对其进行分篇章总结。 一、左旋转 在网上找到一左转GIF示意图。我借用一下: 在不平衡子树的右子树的右孩子插入结点导致的不平衡应该进行左旋转。 /** * 约定null节点的高度为-1, 叶子结点高度为0。到根结点变大; * @param node 某一节...原创 2019-06-09 15:13:47 · 310 阅读 · 0 评论 -
基本排序——快速排序(Python语言描述)
一、快速排序原理 按从小到大快速排序:在数组中随机选一个数(通常为第一个),数组中小于等于此数的放在它左边,大于此数的放在右边,这样将数组一分为二。再对两边数组递归调用快速排序,直到都有序为止。 #!usr/bin/python3 def quickSort(arrlist): length = len(arrlist) _quickSort(arrlist, 0, len...原创 2019-06-15 00:35:13 · 299 阅读 · 0 评论