Python 官方文档:入门教程 => 点击学习
目录冒泡排序算法原理动图演示算法练习算法分析冒泡排序 冒泡排序是一种比较简单的排序算法,我们可以重复遍历要排序的序列,每次比较两个元素,如果他们顺序错误就交换位置,重复遍历到没有可以
冒泡排序是一种比较简单的排序算法,我们可以重复遍历要排序的序列,每次比较两个元素,如果他们顺序错误就交换位置,重复遍历到没有可以交换的元素,说明排序完成。
题目描述: 给定一个无序数组,利用冒泡排序将数组按升序排列。
示例一:
输入: arrs= [5,0,9,3,-1,12]
输出: arrs= [-1,0,3,5,9,12]
示例二:
输入: arrs= [3,5,9,7,2,1]
输出: arrs= [1,2,3,5,7,9]
解题思路:
通过比较相邻的元素,如果前一个比后一个大,则交换位置。
…
代码实现:
public class BubbleTest {
public static void main(String[] args) {
Integer[] arr = {3,5,9,7,2,1};
Bubble.sort(arr);
System.out.println(Arrays.toString(arr));
}
//数组排序
public static void bubblesort(Comparable[] a){
for (int i = a.length - 1;i > 0;i--){
for (int j = 0;j < i;j++){
if (greater(a[j],a[j + 1])){
swap(a,j,j + 1);
}
}
}
}
//比较 v 是否大于 w
public static boolean greater(Comparable v,Comparable w){
return v.compareTo(w) > 0;
}
//数组元素交换位置
private static void swap(Comparable[] a,int i,int j){
Comparable temp;
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
时间复杂度
冒泡排序是一种用时间换空间的排序方法,最坏情况是把顺序的排列变成逆序,或者把逆序的数列变成顺序。在这种情况下,每一次比较都需要进行交换运算。
而对于有n个元素的数列它的比较次数为 (n-1) + (n-2) + … + 1 = n * (n - 1) / 2;因此它的时间复杂度为O(n^2)。
空间复杂度
冒泡排序的辅助变量只是一个临时变量,不会随数组规模的增大而增大,所以冒泡排序的空间复杂度为O(1)。
到此这篇关于图解Java经典算法冒泡排序的原理与实现的文章就介绍到这了,更多相关Java冒泡排序内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: 图解Java经典算法冒泡排序的原理与实现
本文链接: https://www.lsjlt.com/news/167270.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0