# 滚雪球学Java(33)：数组算法大揭秘：应用案例实战分享

🏆本文收录于「滚雪球学Java」专栏，专业攻坚指数级提升，助你一臂之力，带你早日登顶🚀，欢迎大家关注&&收藏！持续更新中，up！up！up！！

1. 冒泡排序算法
2. 快速排序算法
3. 二分查找算法
4. 过滤算法

# 正文

### 1. 冒泡排序算法

public static void bubbleSort(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]) {

int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}


### 2. 快速排序算法

public static void quickSort(int[] arr, int left, int right) {

if (left < right) {

int i = left;
int j = right;
int pivot = arr[left];
while (i < j) {

while (i < j && arr[j] >= pivot) {

j--;
}
if (i < j) {

arr[i] = arr[j];
i++;
}
while (i < j && arr[i] < pivot) {

i++;
}
if (i < j) {

arr[j] = arr[i];
j--;
}
}
arr[i] = pivot;
quickSort(arr, left, i - 1);
quickSort(arr, i + 1, right);
}
}


### 3. 二分查找算法

public static int binarySearch(int[] arr, int target) {

int left = 0;
int right = arr.length - 1;
while (left <= right) {

int mid = (left + right) / 2;
if (arr[mid] == target) {

return mid;
} else if (arr[mid] < target) {

left = mid + 1;
} else {

right = mid - 1;
}
}
return -1;
}


### 4. 过滤算法

public static int[] filter(int[] arr, Filter filter) {

int[] result = new int[arr.length];
int count = 0;
for (int i = 0; i < arr.length; i++) {

if (filter.filter(arr[i])) {

result[count++] = arr[i];
}
}
return Arrays.copyOf(result, count);
}

public interface Filter {

boolean filter(int value);
}


## 测试用例

### 1. 冒泡排序算法

public class BubbleSort {

public static void bubbleSort(int[] arr) {

int len = arr.length;
for (int i = 0; i < len - 1; i++) {

for (int j = 0; j < len - 1 - i; j++) {

if (arr[j] > arr[j + 1]) {

int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}

public static void main(String[] args) {

int[] arr = {
5, 3, 8, 6, 4};
bubbleSort(arr);
for (int i : arr) {

System.out.print(i + " ");
}
}
}


3 4 5 6 8


### 2. 快速排序算法

public class QuickSort {

public static void quickSort(int[] arr, int left, int right) {

if (left < right) {

int i = left;
int j = right;
int pivot = arr[left];
while (i < j) {

while (i < j && arr[j] >= pivot) {

j--;
}
if (i < j) {

arr[i++] = arr[j];
}
while (i < j && arr[i] <= pivot) {

i++;
}
if (i < j) {

arr[j--] = arr[i];
}
}
arr[i] = pivot;
quickSort(arr, left, i - 1);
quickSort(arr, i + 1, right);
}
}

public static void main(String[] args) {

int[] arr = {
5, 3, 8, 6, 4};
quickSort(arr, 0, arr.length - 1);
for (int i : arr) {

System.out.print(i + " ");
}
}
}


3 4 5 6 8


### 3. 二分查找算法

public class BinarySearch {

public static int binarySearch(int[] arr, int target) {

int left = 0;
int right = arr.length - 1;
while (left <= right) {

int mid = left + (right - left) / 2;
if (arr[mid] == target) {

return mid;
} else if (arr[mid] > target) {

right = mid - 1;
} else {

left = mid + 1;
}
}
return -1;
}

public static void main(String[] args) {

int[] arr = {
1, 2, 3, 4, 5};
int target = 4;
int index = binarySearch(arr, target);
System.out.println(index);
}
}


3


### 4. 过滤算法

import java.util.ArrayList;
import java.util.List;

public class FilterAlgorithm {

public static List<Integer> filter(List<Integer> list) {

List<Integer> result = new ArrayList<>();
for (int i : list) {

if (i % 2 == 0) {

}
}
return result;
}

public static void main(String[] args) {

List<Integer> list = new ArrayList<>();
List<Integer> result = filter(list);
for (int i : result) {

System.out.print(i + " ");
}
}
}


2 4


## 附录源码

如上涉及所有源码均已上传同步在 Gitee，提供给同学们一对一参考学习，辅助你更迅速的掌握。

# ☀️建议/推荐你

无论你是计算机专业的学生，还是对编程有兴趣的小伙伴，都建议直接毫无顾忌的学习此专栏「滚雪球学Java」，bug菌郑重承诺，凡是学习此专栏的同学，均能获取到所需的知识和技能，全网最快速入门Java编程，就像滚雪球一样，越滚越大，指数级提升。

|
19小时前
|

java算法_输出只有235组成的数字
java算法_输出只有235组成的数字
10 5
|
15小时前
|

java中经典算法代码整理
java中经典算法代码整理
13 0
|
16小时前
|
Java
java将字符串按照指定长度分割成字符串数组
java将字符串按照指定长度分割成字符串数组
5 0
|
16小时前
|
Java
java代码块和具体的代码应用
java代码块和具体的代码应用
|
22小时前
|

Java算法编程详解和程序实例
Java算法编程详解和程序实例
|
23小时前
|
Java
java中将集合数组转换为Stream流
java中将集合数组转换为Stream流
6 0
|
23小时前
|
Java
java的lambda延时执行特性案例
java的lambda延时执行特性案例
6 0
|
23小时前
|
SQL 监控 Java

【6月更文挑战第24天】Java连接池技术持续演进，提升高性能和低延迟，如HikariCP因卓越性能受青睐。现代连接池实现智能管理与监控，增强扩展性和兼容性。最佳实践包括选择适合的连接池（如HikariCP）、优化配置参数、利用监控工具及优化DB操作。示例展示了使用HikariCP配置连接池的基本步骤。
4 0
|
1天前
|

【6月更文挑战第24天】Java连接池优化数据库访问，减少连接创建/关闭开销，提升性能和稳定性。它包括连接池管理器、连接池和连接工厂组件。
5 0
|
1天前
|