随笔分类 - 数据结构与算法
循环队列
摘要:## C语言实现 ``` #include #define MAX_SIZE 10 typedef struct { int queue[MAX_SIZE]; int front; int rear; } CircularQueue; void initializeQueue(CircularQue
单链表
摘要:## C语言实现 > 涉及二级指针内存申请和释放 ### 结构体定义 ```c typedef int32_t DATA_TYPE; typedef struct { DATA_TYPE value; struct List *next; } List; ``` ### 相关方法实现 ``` #in
Java常用
摘要:package kemuyi; import com.sun.jmx.remote.internal.ArrayQueue; import org.junit.Test; import org.junit.experimental.theories.suppliers.TestedOn; impor
刷题总结
摘要:数据结构 一、Stack 1.1 Java API Deque stack = new ArrayDeque<>(); // 或者是LinkedList<>() // @deprecated Stack stack = new Stack(); stack.push(); stack.pop();
排序算法
摘要:1. 冒泡排序 最基础排序,一句话总结冒泡排序,对于给定的数组,如果是升序排序,每一趟排序,都会把最大的元素放置在当前趟次的最后位置; 冒泡排序,只会比较交换两个相邻的元素 时间复杂度:严格O(N^2) ,和数据无关; public static void bubbleSort(int[] arr)
【位运算】总结
摘要:1. 前言 对于计算机而言,无论用什么语言编写的程序,最终都要转化为二进制进行运算 因为硬件的支持,PC的二进制运算速度比十进制的运算快的多,因此把普通变量的运算用位运算的方式实现,能极大的提升程序性能 2. 位运算 位运算一共有6种:与( & )、或( | )、非( ~ )、异或( ^ )、左移(
递归算法
摘要:1. 原则 1.1 递归三要素 1. 明确函数功能,先不管函数里面的代码逻辑是什么,首先要明确自己定义的函数用来干什么 2. 寻找递归结束条件,递归就是就是函数自己调用自己,不然就是就会出现死循环,最终导致栈溢出StackOveflowError 3. 寻找函数的等价关系式,不断的缩小参数范围 1.
二分查找
摘要:引言 Although the basic idea of binary search is comparatively straightforward, the details can be surprisingly tricky 基础二分 public int basicBinarySearch