排序算法之冒泡排序篇

冒泡排序的思想:

是一个把元素从小到大排的一个算法思想

相邻的两个元素两两比较,大的那一个元素向后移,小的那个元素向前移

核心逻辑:

比较所有相邻的两个项,如果第一个比第二个大,就交换它们

从头开始:

第一轮排序时:每相邻的两个元素进行比较,

让大的元素排在后面,

让小的元素排在前面,

第一轮排序之后就让最大的元素排在了最后面,

一共要进行n-1轮的排序,即如果一共有n个元素,那么就要进行n-1轮的排序

视频实现冒泡排序

文字描述如上,以下是冒泡排序的视频全过程

冒泡排序全过程

代码实现冒泡排序

接下来我们进行代码的实现

用一个方法来实现这个冒泡排序

java 复制代码
public static void bubble(int[] arr){
	//外层循环的是一共要比较循环多少遍,即要进行多少轮的排序
	for(int i = 0;i < arr.length-1; i++){
		//内层循环的是每一轮循环一共要比较多少次
		for(int j = 0; i <arr.length -i-1; j++){
			if(arr[j] > arr[j+1]){
				//如果第一个元素大于第二个就交换
				int temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
			}
		}
	}
}

时间复杂度分析:

最好情况:

O(N):最好情况之下,数组完全是有序的,但是冒泡排序仍然需要进行一次循环

最坏情况:

O(N^2):最坏情况之下,数组是完全逆序的,冒泡排序需要进行(n-1)次循环

相关推荐
এ᭄画画的北北42 分钟前
力扣-234.回文链表
算法·leetcode·链表
八股文领域大手子1 小时前
深入理解缓存淘汰策略:LRU 与 LFU 算法详解及 Java 实现
java·数据库·算法·缓存·mybatis·哈希算法
__lost2 小时前
C++ 解决一个简单的图论问题 —— 最小生成树(以 Prim 算法为例)
算法·图论·最小生成树·prim算法
wuqingshun3141593 小时前
蓝桥杯 11. 打印大X
数据结构·算法·职场和发展·蓝桥杯·深度优先
Blossom.1184 小时前
量子网络:构建未来通信的超高速“高速公路”
网络·opencv·算法·安全·机器学习·密码学·量子计算
A林玖4 小时前
【机器学习】朴素贝叶斯
人工智能·算法·机器学习
六边形战士DONK4 小时前
神经网络基础[损失函数,bp算法,梯度下降算法 ]
人工智能·神经网络·算法
wuqingshun3141594 小时前
蓝桥杯 2. 确定字符串是否是另一个的排列
数据结构·c++·算法·职场和发展·蓝桥杯
小刘|4 小时前
JVM 自动内存管理
java·jvm·算法
小羊不会c++吗(黑客小羊)5 小时前
c++头文件知识
算法