java常用算法手册 代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档