java常用算法手册 代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
java常用算法手册代码
算法是计算机科学的核心,而Java作为一种广泛应用的编程语言,其算法的实现对于解决各种问题至关重要。本手册将介绍Java中常用的一些算法,并提供相应的代码示例,以帮助开发人员更好地理解和应用这些算法。
1. 排序算法
1.1 冒泡排序
public class BubbleSort {
public static void sort(int[]arr){
int n =arr.length;
for(int i =0;i <n -1;i++){
for(int j =0;j <n -i -1;j++){
if(arr[j]>arr[j +1]){
// 交换arr[j]和arr[j+1]
int temp =arr[j];
arr[j]=arr[j +1];
arr[j +1]=temp;
}
}
}
}
}
1.2 快速排序
public class QuickSort {
public static void sort(int[]arr,int low,int high){ if(low <high){
int pi =partition(arr,low,high);
sort(arr,low,pi -1);
sort(arr,pi +1,high);
}
}
private static int partition(int[]arr,int low,int high){ int pivot =arr[high];
int i =low -1;
for(int j =low;j <high;j++){
if(arr[j]<pivot){
i++;
// 交换arr[i]和arr[j]
int temp =arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
// 交换arr[i+1]和arr[high]
int temp =arr[i +1];
arr[i +1]=arr[high];
arr[high]=temp;
return i +1;
}
}
2. 搜索算法
2.1 二分查找
public class BinarySearch {
public static int search(int[]arr,int target){ int low =0;
int high =arr.length-1;
while(low <=high){
int mid =low +(high -low)/2;
if(arr[mid]==target){
return mid;
}else if(arr[mid]<target){
low =mid +1;
}else{
high =mid -1;
}
}
return-1;
}
}
3. 数据结构
3.1 链表
class ListNode {
int val;
ListNode next;
ListNode(int val){
this.val=val;
}
}
public class LinkedList{
public ListNode reverse(ListNode head){ ListNode prev =null;
ListNode current =head;
while(current !=null){
ListNode next =current.next;
current.next=prev;
prev =current;
current =next;
}
return prev;
}
}
3.2 栈
import java.util.Stack;
public class StackExample {
public static void main(String[]args){
Stack<Integer>stack =new Stack<>();
stack.push(1);
stack.push(2);
stack.push(3);
while(!stack.isEmpty()){
System.out.println(stack.pop());
}
}
}
4. 图算法
4.1 深度优先搜索(DFS)
import java.util.ArrayList;
import java.util.List;
public class DFS {
private List<List<Integer>>graph;
private boolean[]visited;
public DFS(List<List<Integer>>graph){
this.graph=graph;
this.visited=new boolean[graph.size()];
}
public void dfs(int node){
if(!visited[node]){
System.out.println(node);
visited[node]=true;