随笔分类 -  算法

摘要:归并排序 时间复杂度为O(nlog(n)),稳定排序,需要额外空间O(n),原地归并没看 归并排序的两种方式 自顶向下 先向下分治成规模为2的子问题,然后向上进行merge; 自底向上 在底部先进行规模为2的归并,然后处理规模为4,8...的问题向上归并 代码示例 merge方法用的同一个,额外空间 阅读全文
posted @ 2022-09-28 21:33 北de窗 阅读(35) 评论(0) 推荐(0)
摘要:堆排序 建堆,移动最值,维护堆 时间复杂度 初始化建堆O(n),排序重建堆O(nlog(n)) 总时间复杂度 O(nlog(n)); 不稳定 代码实现:最大堆最小堆的区别只是在节点和子节点比较 package leet; import org.junit.Test; import java.util 阅读全文
posted @ 2022-09-27 22:00 北de窗 阅读(33) 评论(0) 推荐(0)
摘要:快速排序 介绍 时间复杂度O(nlogn) 不稳定 基于比较 代码实现 递归版 一个分治的递归主函数,一个实现partition的函数,这里给出patition函数实现的三种方式。 // 主函数 public void quickSort(int[] nums, int left, int righ 阅读全文
posted @ 2022-09-25 20:00 北de窗 阅读(14) 评论(0) 推荐(0)