当前位置: 首页 > news >正文

Java 常见常用算法详解

Java 常见常用算法详解(2026 最新版 · 面试 + 生产实用)

以下内容精选了 Java 开发和面试中出现频率最高、最实用的 20+ 个算法,按实际使用场景分类整理。每种算法都包含:

  • 核心思想
  • 时间/空间复杂度
  • Java 完整可运行代码(JDK 8+ 风格)
  • 适用场景 & 面试高频追问
  • 优化点

一、排序算法(面试必考 Top 3)

算法时间复杂度(平均/最坏)空间复杂度稳定性适用场景推荐指数
快速排序O(nlog n) / O(n²)O(log n)不稳定大数据量、综合性能最佳★★★★★
归并排序O(nlog n)O(n)稳定链表排序、外部排序、稳定需求★★★★★
堆排序O(nlog n)O(1)不稳定TopK、优先队列★★★★☆
1. 快速排序(Quick Sort)—— 最常用
publicstaticvoidquickSort(int[]arr,intleft,intright){if(left>=right)return;intpivot=partition(arr,left,right);// 选基准并分区quickSort(arr,left,pivot-1);quickSort(arr,pivot+1,right);}privatestaticintpartition(int[]arr,intleft,intright){intpivot=arr[right];// 选最右为基准(可随机优化)inti=left-1;for(intj=left;j<right;j++){if(arr[j]<pivot){i++;swap(arr,i,j);}}swap(arr,i+1,right);returni+1;}privatestaticvoidswap(int[]arr,inti,intj){inttemp=arr[i];arr[i]=arr[j];arr[j]=temp;}

优化技巧(面试加分)

  • 三数取中选基准
  • 小数组切换插入排序
  • 随机化基准(int pivotIndex = left + random.nextInt(right - left + 1);
2. 归并排序(Merge Sort)
publicstaticvoidmergeSort(int[]arr,intleft,intright){if(left>=right)return;intmid=left+(right-left)/2;mergeSort(arr,left,mid);mergeSort(arr,mid+1,right);merge(arr,left,mid,right);}privatestaticvoidmerge(int[]arr,intleft,intmid,intright){int[]temp=newint[right-left+1];inti=left,j=mid+1,k=0;while(i<=mid&&j<=right){temp[k++]=arr[i]<=arr[j]?arr[i++]:arr[j++];}while(i<=mid)temp[k++]=arr[i++];while(j<=right)temp[k++]=arr[j++];System.arraycopy(temp,0,arr,left,temp.length);}

二、查找算法

算法时间复杂度适用条件推荐指数
二分查找O(log n)有序数组★★★★★
线性查找O(n)无序小数组★★★☆☆
二分查找(Binary Search)模板(必须背熟)
// 查找第一个 >= target 的位置(左边界)publicstaticintlowerBound(int[]arr,inttarget){intleft=0,right=arr.length;while(left<right){intmid=left+(right-left)/2;if(arr[mid]<target){left=mid+1;}else{right=mid;}}returnleft;}

三、双指针 / 滑动窗口(2026 年高频)

经典滑动窗口模板(固定 + 动态)

// 动态窗口:最长无重复子串publicintlengthOfLongestSubstring(Strings){Map<Character,Integer>window=newHashMap<>();intleft=0,maxLen=0;for(intright=0;right<s.length();right++){charc=s.charAt(right);window.put(c,window.getOrDefault(c,0)+1);while(window.get(c)>1){// 收缩左边界chard=s.charAt(left);window.put(d,window.get(d)-1);left++;}maxLen=Math.max(maxLen,right-left+1);}returnmaxLen;}

四、链表经典算法

反转链表(迭代 + 递归)
// 迭代版(最常用)publicListNodereverseList(ListNodehead){ListNodeprev=null,curr=head;while(curr!=null){ListNodenext=curr.next;curr.next=prev;prev=curr;curr=next;}returnprev;}
快慢指针经典用法
  • 找链表中点:快慢指针
  • 判断环:Floyd 判圈法
  • 删除倒数第 N 个节点

五、树与二叉树

前中后序遍历(递归 + 非递归)

// Morris 遍历(空间 O(1))—— 面试加分神器publicList<Integer>inorderTraversal(TreeNoderoot){List<Integer>res=newArrayList<>();TreeNodecur=root;while(cur!=null){if(cur.left==null){res.add(cur.val);cur=cur.right;}else{TreeNodeprev=cur.left;while(prev.right!=null&&prev.right!=cur){prev=prev.right;}if(prev.right==null){prev.right=cur;cur=cur.left;}else{prev.right=null;res.add(cur.val);cur=cur.right;}}}returnres;}

六、动态规划入门(最常考)

经典 01 背包

publicintknapsack(int[]weights,int[]values,intcapacity){intn=weights.length;int[]dp=newint[capacity+1];for(inti=0;i<n;i++){for(intj=capacity;j>=weights[i];j--){dp[j]=Math.max(dp[j],dp[j-weights[i]]+values[i]);}}returndp[capacity];}

七、其他高频算法速查表

算法类型经典题目(LeetCode)核心技巧
贪心455 分发饼干、122 买卖股票局部最优 → 全局最优
并查集200 岛屿数量、547 省份数量Union-Find + 路径压缩
拓扑排序207 课程表Kahn / DFS
KMP28 实现 strStr()前缀表
位运算136 只出现一次的数字、191 位1的个数n & (n-1)
数学7 整数反转、9 回文数取余 / 数学公式

八、2026 年算法学习建议

  1. 刷题顺序推荐

    • 第一轮:LeetCode Hot 100(按标签刷)
    • 第二轮:剑指 Offer + 程序员面试金典
    • 第三轮:LeetCode 精选 200 + 公司题库(字节/阿里/美团)
  2. Java 实现注意点

    • 优先使用ArrayDeque代替StackLinkedList
    • 优先使用PriorityQueue(堆)
    • 字符串操作优先StringBuilder
  3. 面试答题模板(强烈推荐):

    • 先说时间/空间复杂度
    • 再讲核心思想(双指针/动态规划/贪心…)
    • 给出代码框架
    • 最后说优化点 / 边界处理

需要我继续展开哪一块?

  • 排序算法全家桶(7 大排序完整代码 + 动画描述)
  • 动态规划专题(背包、股票、子序列、区间 DP)
  • 图论算法(BFS/DFS/Dijkstra/Floyd/拓扑排序)
  • 字符串专题(KMP + Manacher + 滑动窗口)
  • LeetCode 高频 50 题 Java 模板合集

告诉我你的重点,我立刻给你最详细的代码 + 解析!

http://www.jsqmd.com/news/410752/

相关文章:

  • 变压器选购终极指南:五大核心场景解析与头部品牌深度推荐 - 博客湾
  • 运维不想干了,还能有什么工作能干的?
  • 开题卡住了?千笔,继续教育论文写作神器
  • Java IO流的核心概念与应用实践
  • 小区低压泵喷泉维护指南:附口碑服务公司参考,低压泵喷泉厂商综合实力与口碑权威评选 - 品牌推荐师
  • 【Copilot配置】—— Copilot 设置全解析 + 最佳实践|解锁 AI 辅助开发效率天花板
  • 建议收藏|自考必备的降AI率工具 千笔AI VS Checkjie
  • 2026年自动化设备零件CNC加工厂家推荐:聚焦非标定制与精益质量管控 - 余文22
  • 用实力说话学生热捧的AI论文写作软件 —— 千笔·专业学术智能体
  • 基于springboot的宿舍报修系统(编号:61368153)
  • 2026年正规的微动摩擦磨损试验机,涂层摩擦磨损试验机,立式万能摩擦磨损试验机厂家选型推荐名录 - 品牌鉴赏师
  • 曲院风荷:湖光潋滟中的江南园林意趣
  • 互联网大厂Java求职面试实战:核心技术栈与音视频场景深度解析
  • 聊聊金华地区靠谱的不锈钢滤勺厂家,浩然五金排名怎样? - 工业品网
  • AI助手系统:那些藏在“懂你”背后的核心技术
  • Java最新面试题(全网最全、最细、附答案)
  • 【易经系列】《需卦》初九:需于郊,利用恒,无咎。
  • Java之Volatile 关键字全方位解析:从底层原理到最佳实践
  • CANN一站式开发平台全面公测
  • 2026年优秀的无锡网页设计开发,无锡网页设计制作,无锡网页设计服务公司用户口碑推荐清单 - 品牌鉴赏师
  • ops-samples仓开源介绍
  • 2026年GEO优化工具推荐榜单:五大核心品牌测评及场景适配指南 - 博客湾
  • 2026年正规的多功能分子蒸馏设备,多级分子蒸馏设备,实验室用分子蒸馏设备厂家选购攻略与推荐 - 品牌鉴赏师
  • 2026年广东口碑好的,钢结构镀锌方管,镀锌方管采购厂家新品推荐榜 - 品牌鉴赏师
  • 兰亭妙微作品一交大思源北京地铁监视中心大屏和PC端交互优化及界面设计
  • 轻量化图模式后端npugraph_ex
  • 什么牌子育发液效果好?防脱育发液前十名权威公布:安全有效轻松养出浓密秀发 - 博客万
  • Python在CentOS系统执行深度指南
  • 2026年专业的无锡网站建设设计,无锡网站建设制作,无锡网站建设定制公司选型参考榜单 - 品牌鉴赏师
  • 2026 最新美白防晒乳TOP5评测!养肤防护双效权威榜单发布 - 十大品牌榜