目录
- 前言
- 冒泡排序介绍
- 通俗理解
- 代码实现
- 冒泡降序排序
- 每日小技巧
- 快速搜索
- 预览搜索结果
- 常见排序算法
- 最后
前言
本篇文章将通过IDE使用 Java 语言实现一个冒泡排序。
冒泡排序介绍
冒泡排序也是一种简单直观的排序算法。
冒泡排序的基本思想是多次遍历要排序的数组,每次比较相邻的元素,如果顺序不对就交换它们的位置,一次遍历会将一个最大(或最小)的元素"冒泡"到数组的末尾(或开头)。
通过多次遍历,直到没有任何元素需要交换,整个数组就排序完成了。
通俗理解
当你需要对一组数字进行排序时,冒泡排序就像是在一个装有很多颜色不同的气泡的水槽里,不断地把气泡按照大小顺序排列。
在这个简单的排序算法中,我们会从数组的开头开始,比较相邻的两个数字,如果前一个数字比后一个数字大,就把它们交换位置。
这样,每一轮比较,都会让一个最大的数字“冒泡”到当前尚未排序的部分的末尾。
举个例子,假设我们有一组数字:3, 38, 5, 44, 15, 47, 36, 26, 27, 2, 46, 4, 19, 50, 48。
下面是冒泡排序的执行过程:
1.第一轮比较后,最大的数字 50 被冒泡到了数组末尾,数组变为:3, 5, 38, 15, 44, 36, 26, 27, 2, 46, 4, 19, 47, 48, 50
2.第二轮比较后,第二大的数字 48 被冒泡到了倒数第二的位置,数组变为:3, 5, 15, 38, 36, 26, 27, 2, 44, 4, 19, 46, 47, 48, 50
3.经过多轮比较和交换后,所有数字按照从小到大的顺序排列完成。
代码实现
冒泡排序的 Java 代码
public class BubbleSortExample { public static void main(String[] args) { int[] array = {3, 38, 5, 44, 15, 47, 36, 26, 27, 2, 46, 4, 19, 50, 48}; System.out.println("排序前数组:"); printArray(array); bubbleSort(array); System.out.println("\n排序后数组:"); printArray(array); } 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]) { // 交换 arr[j] 和 arr[j+1] int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } public static void printArray(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } } }
效果
动图演示
冒泡降序排序
冒泡排序的默认排序方式是升序排序。
在冒泡排序算法中,数组中相邻的元素会进行比较,如果顺序不对则进行交换,每一轮排序都会将当前最大(或最小)的元素放到正确的位置上,最终实现整个数组的升序排序。
如果要将冒泡排序改为降序排序,只需在比较大小的地方做相应修改即可,如将大于号(>)改为小于号(<)
public class BubbleSortExample { public static void main(String[] args) { int[] array = {3, 38, 5, 44, 15, 47, 36, 26, 27, 2, 46, 4, 19, 50, 48}; System.out.println("排序前数组:"); printArray(array); bubbleSort(array); System.out.println("\n排序后数组:"); printArray(array); } 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]) { // 修改此处实现降序排序 // 交换 arr[j] 和 arr[j+1] int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } public static void printArray(int[] arr) { for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } } }
每日小技巧
快速搜索
预览搜索结果
您可以使用在文件中查找对话框(Ctrl+Shift+F)得预览区域,不必推出对话框就能执行快速搜索。预览对话框可以显示前100条结果
常见排序算法
- 算法思想:通过交换相邻的元素进行比较和排序,每一轮将未排序部分中最大(或最小)的元素沉到底部。
- 时间复杂度:平均情况和最坏情况下的时间复杂度均为 O(n^2)。
- 适用场景:适用于数据量较小的情况。
2.选择排序(Selection Sort)
- 算法思想:每一次遍历找到未排序部分中的最小(或最大)元素,放到已排序部分的末尾。
- 时间复杂度:平均情况和最坏情况下的时间复杂度均为 O(n^2)。
- 适用场景:适用于数据量较小的情况。
3.插入排序(Insertion Sort)
- 算法思想:将数组分为已排序部分和未排序部分,依次将未排序部分的元素插入到已排序部分的合适位置。
- 时间复杂度:平均情况和最坏情况下的时间复杂度均为 O(n^2)。
- 适用场景:适用于部分有序的情况,数据量不大的情况。
4.快速排序(Quick Sort)
- 算法思想:通过选择一个基准元素,将数组分为比基准小和比基准大的两部分,递归地对两部分进行排序。
- 时间复杂度:平均情况下的时间复杂度为 O(nlogn),最坏情况下为 O(n^2)。
- 适用场景:适用于大规模数据的排序,性能较好。
5.归并排序(Merge Sort)
- 算法思想:将数组递归地分成两部分,分别排序后合并,;最终得到有序数组。
- 时间复杂度:最坏情况下的时间复杂度为 O(nlogn)。
- 适用场景:适用于对链表以及数组等数据结构进行排序。
最后
到此这篇关于使用Java语言实现一个冒泡排序的文章就介绍到这了,更多相关Java实现冒泡排序内容请搜索本网站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本网站!
您可能感兴趣的文章:
- 详解Java之冒泡排序与选择排序
- Java冒泡排序及优化介绍
- Java 十大排序算法之冒泡排序刨析
- Java最简洁数据结构之冒泡排序快速理解
- java 排序算法之冒泡排序