更新时间:2022-04-19 09:22:07 来源:动力节点 浏览1302次
动力节点小编来告诉大家Java冒泡排序法的工作原理,排序通常意味着将特定数组或元素集合排序或排序为特定序列,即按升序或降序。
有多种排序技术可以对给定的数字数组进行排序。在本文中,我们将学习 Java 中的冒泡排序技术。它是最常用的排序技术之一。
我们将讨论它的工作原理,并且我们将在 Java 中实现它以按升序和降序对数组进行排序。所以,不浪费时间,让我们开始讨论什么是冒泡排序。
冒泡排序是 Java 中对数组元素进行排序的最简单的排序技术之一。
这个想法是通过比较相邻元素并在它们不是特定顺序时交换它们来从起始元素遍历到最后一个元素。
它被称为冒泡排序,因为在每次迭代结束时,最大的数字位于数组的底部,就像最重的气泡在容器中沉淀一样。元素的交换继续进行,直到数组被排序并且不再需要交换。
我们还可以按降序对元素进行排序,每次迭代中最小的元素位于数组的末尾。这只有在我们反转元素的权重时才会发生。
1.冒泡排序 的最坏和平均情况复杂度为O(n2),其中 n 表示数组中元素的总数。
2.冒泡排序的最佳情况复杂度是O(n),其中 n 是数组中元素的数量。这种情况只有在给定数组已经排序时才会发生。
3.冒泡排序算法消耗 的辅助空间是O(1)
4.冒泡排序是一种就地排序。
5.冒泡排序是一种稳定的算法。
注意:我们可以通过在原始代码中添加一些额外的代码行来优化冒泡排序算法并将复杂度降低到“n” (O(n))的数量级。
如果用户输入了一个有序数组,那么,与其申请所有的pass,我们可以只申请一个pass,并检查在整个pass期间是否发生任何交换。
如果在整个过程中没有发生交换,那么我们停止算法并返回原始数组。通过添加这段代码,我们可以确保提高算法的性能并降低时间复杂度。
现在,我们将看到 Java 中的冒泡排序如何处理给定的数组。我们有一个数组并对其进行排序,经过 4 次迭代,我们将得到一个排序后的数组。
package com.techvidvan.bubblesort;
public class BubbleSortDemo {
static void bubbleAscending(int[] myarray) {
int n = myarray.length;
int temp = 0;
for (int i = 0; i < n; i++) {
for (int j = 1; j < (n - i); j++) {
if (myarray[j - 1] > myarray[j]) {
//Code to swap the elements
temp = myarray[j - 1];
myarray[j - 1] = myarray[j];
myarray[j] = temp;
}
}
}
}
public static void main(String[] args) {
int myarray[] = {
4,
15,
12,
21,
2,
25,
10,
18
};
System.out.println("Array on which we apply Bubble Sort: ");
for (int i = 0; i < myarray.length; i++) {
System.out.print(myarray[i] + " ");
}
System.out.println();
bubbleAscending(myarray); //Applying Bubble sort to sort the Array
System.out.println("Array after applying Bubble Sort: ");
for (int i = 0; i < myarray.length; i++) {
System.out.print(myarray[i] + " ");
}
}
}
输出:
我们应用冒泡排序的数组:4、15、12、21、2、25、10、18
应用冒泡排序后的数组:2、4、10、12、15、18、21、25
包 com.techvidvan.bubblesort;
公共类 BubbleSortDemo {
静态无效气泡降序(int [] myarray){
int n = myarray.length;
国际温度 = 0;
for (int i = 0; i < n; i++) {
for (int j = 1; j < (n - i); j++) {
如果 (myarray[j - 1] < myarray[j]) {
//交换元素的代码
temp = myarray[j - 1];
我的数组[j - 1] = 我的数组[j];
我的数组 [j] = 温度;
}
}
}
}
公共静态无效主要(字符串[]参数){
int myarray[] = {
4、
15,
12,
21,
2、
25,
10,
18
};
System.out.println("我们应用冒泡排序的数组:");
for (int i = 0; i < myarray.length; i++) {
System.out.print(myarray[i] + "");
}
System.out.println();
气泡降序(myarray);//使用冒泡排序对数组进行排序
System.out.println("冒泡排序后的数组:");
for (int i = 0; i < myarray.length; i++) {
System.out.print(myarray[i] + "");
}
}
}
输出:
我们应用冒泡排序的数组:4、15、12、21、2、25、10、18
应用冒泡排序后的数组:25、21、18、15、12、10、4、2
由于冒泡排序技术是最简单的排序技术,因此它经常用于软件技术的许多领域。
例如,冒泡排序在计算机图形学领域非常有用,它可用于检测非常小的错误,例如两个元素之间的交换,并以 2n 的线性复杂度修复错误,其中 n 是元素的数量在数组中。
冒泡排序的优点是:
写起来简单易懂
只需要几行代码
冒泡排序是一种就地排序技术,因此数据在内存中,因此内存开销最小。
冒泡排序也有一些缺点:
对数组元素进行排序需要更多时间。
平均时间复杂度随着数组元素数量的增加而增加。
以上就是关于“Java冒泡排序法的工作原理”介绍,除了冒泡排序法以外,还有其他方法,感兴趣的小伙伴可以关注一下动力节点的Java数组排序方法详解,里面有更丰富的知识等着大家去学习,希望对大家能够有所帮助哦。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习