动态顺序表 动态顺序表动态顺序表属性中采用指针基质方式设计,当原来的数组满了之后,采用realloc函数重新分配一部分内存,让结构体的基址指针指向新的这部分扩容后的内容,变相实现了顺序表的动态扩容 代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 2022-11-16 线性表 #顺序表
静态顺序表 静态顺序表声明的结构体属性中,直接采用数组,因此能实现直接定位,但也正因为是数组,导致不能扩容。只能静态使用 源码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 2022-11-16 线性表 #顺序表
归并排序 归并排序 核心为分治思想(分解,解决,合并),以下代码采用递归的思想。时间复杂度任何情况下都是$O(nlogn)$。空间复杂度为$O(n)$在进行子数组合并的时候,需要临时申请一个数组来暂时存放排好序的数据。因为这个临时空间是可以重复利用的,最多需要存放n个数据。 代码由上向下的思想实现排序 mergeSort用于实现(int low, int high)之间排序,merge用完具体完成排序任务 2022-11-08 排序算法 #分治排序
快速排序 快速排序快速排序是交换排序(冒泡排序也是交换排序)的一种,时间复杂度可达到$(nlog_2n)$。快速排序的最坏运行情况是 O(n²),比如说顺序数列的快排。但它的平摊期望时间是 O(nlogn),且 O(nlogn) 记号中隐含的常数因子很小,比复杂度稳定等于 O(nlogn) 的归并排序要小很多。所以,对绝大多数顺序性较弱的随机数列而言,快速排序总是优于归并排序。 思路在于分治的策略,该方法的 2022-10-29 排序算法 #交换排序
简单选择排序 选择排序选择排序是一种经典的排序算法,排序的步骤为 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。 重复第二步,直到所有元素均排序完毕。 实例代码1234567891011121314151617181920212223242526272829303132333435363738394041424344 2022-10-26 排序算法 #选择排序
希尔排序 希尔排序希尔排序是一种递减增量排序算法,是时间第一个突破$O(n^2)$的排序算法,核心思想在于增量缩减例如将6 5 4 3 2 1排序得到升序结果第一轮计算增量 gap = arr.length/2 = 6/2 = 3按照 0+n*gap 的格式找到最后一个小于数据长度的元素所以索引(0,0+3)(1,1+3)(2,2+3)比较,交换6和3位置, 2022-10-17 排序算法 #插入排序
直接插入排序 概念直接插入排序顾名思义就是不停的将元素插入到一个有序的元素中。可以把整体的元素,划分为有序序列和无序序列 取出无序序列的一个元素 在有序中找到合适的位置 将此元素放到有序元素中重复上方过程,直到没有无序的元素 步骤举例有一组数据 6 5 4 3 2 1,利用直接插入排序算法,排序为升序。有序的元素 【6】(有序序列只有一个元素时必定有序,所以初始就用第一个元素作为有序序列),无序序列【5,4 2022-10-07 排序算法 #插入排序
堆排序 概念堆排序是选择排序的一种,堆通常是一个可以被看做一棵完全二叉树的数组对象。堆是一种不稳定的内部排序算法,时间复杂度无论最好,最差,平均都是$log(n)$,此处n表示待排序元素个数。 大顶堆:每个节点的值都大于或等于其子节点的值,在堆排序算法中用于升序排列; 小顶堆:每个节点的值都小于或等于其子节点的值,在堆排序算法中用于降序排列; 补充不稳定排序:数组中相同的元素,在经过排序,前后顺序会发 2022-10-07 排序算法 #选择排序
冒泡排序 冒泡排序冒泡排序是一种交换排序,核心为挨着的两个元素互相进行交换例如将1 2 7 5 4 6排序得到升序结果第一轮 1和2是升序,不交换 2和7是升序,不交换 7和5是降序,交换,得到 1 2 5 7 4 6 7和4是降序,交换,得到 1 2 5 4 7 6 7和6是降序,交换,得到 1 2 5 4 6 7得到第一轮冒泡结果 1 2 5 4 6 7第二轮 1和2是升序,不交换 2和5是升序,不 2022-10-06 排序算法 #交换排序
Java代码块运行顺序 Java代码运行顺序类内容(静态变量、静态初始化块) > 实例内容(变量、初始化块、构造器){static变量、static{}} > {初始变量、初始化块{} > ClassName{}> NormalFunction(){}} static{}:从属于类的方法,在有类的,还没有类对象的时候即存在了初始化代码块{}: 初始化类对象优先运行代码块,再运行构造方法ClassN 2022-10-06 Java #笔试