技术文摘
八大常用排序算法的 Java 代码实现
2024-12-31 13:07:42 小编
八大常用排序算法的 Java 代码实现
在 Java 编程中,排序算法是非常重要的基础知识。本文将详细介绍八大常用排序算法的 Java 代码实现。
冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访要排序的数列,一次比较两个数据元素,如果顺序不对则进行交换,并一直重复这样的走访操作,直到没有要交换的数据元素为止。
以下是冒泡排序的 Java 代码实现:
public class BubbleSort {
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;
}
}
}
}
public static void main(String[] args) {
int[] arr = {64, 34, 25, 12, 22, 11, 90};
bubbleSort(arr);
for (int num : arr) {
System.out.print(num + " ");
}
}
}
选择排序(Selection Sort)首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
其 Java 代码如下:
public class SelectionSort {
public static void selectionSort(int[] arr) {
int n = arr.length;
for (int i = 0; i < n - 1; i++) {
int min_idx = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[min_idx]) {
min_idx = j;
}
}
if (min_idx!= i) {
int temp = arr[i];
arr[i] = arr[min_idx];
arr[min_idx] = temp;
}
}
}
public static void main(String[] args) {
int[] arr = {64, 34, 25, 12, 22, 11, 90};
selectionSort(arr);
for (int num : arr) {
System.out.print(num + " ");
}
}
}
插入排序(Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入,直到整个数组有序。
以下是插入排序的代码实现:
public class InsertionSort {
public static void insertionSort(int[] arr) {
int n = arr.length;
for (int i = 1; i < n; i++) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
public static void main(String[] args) {
int[] arr = {64, 34, 25, 12, 22, 11, 90};
insertionSort(arr);
for (int num : arr) {
System.out.print(num + " ");
}
}
}
以上只是八大排序算法中的三种,后续还包括希尔排序、快速排序、归并排序、堆排序和基数排序,掌握这些排序算法对于提高编程能力和解决实际问题具有重要意义。
- 我为何放弃使用 Kotlin 中的协程
- Spring Boot 过滤器的多种注册方式:手把手教学
- Python 内置方法与属性的运用:反射及单例
- JVM 的神秘天地
- 港中文 MMLab 推出自监督表征学习代码库 OpenSelfSup 仅需一行命令跑评测
- Go 语言开源小工具 助力程序员远程办公
- 7 个让 Code Review 高效高质的建议
- Java 实现动态脚本的方法
- 国内首款 AI 自动化漏洞挖掘系统上线公测 开发者迎福音
- Bokeh 助力 Python 绘图实现交互性
- 为何不选用 Kubernetes?
- GitHub 开源 Super Linter 以自动化满足开发者需求
- 新冠病毒促使 AR、MR 和 IoT 技术加速采用
- 轻量级分析工具可替代 Google Analytics
- 面试官:聊聊您对 HashMap 的认识