冒泡排序
- 从数列的第一个元素开始,比较相邻的两个元素,如果前一个元素大于后一个元素,则交换这两个元素的位置。
- 继续比较下一个相邻的两个元素,重复上述步骤,直到最后一个元素。
- 重复以上步骤,每次比较的元素数减少一个,直到只剩下一个元素,排序完成。
冒泡排序的时间复杂度是O(n^2),其中n是待排序数列的长度。虽然冒泡排序的效率相对较低,但它是一种简单易懂的排序算法,适用于小规模的数据排序。
package 排序算法;
public class 冒泡排序 {
public static void main(String[] args) {
/*
冒泡排序:
核心思想:
1,相邻的元素两两比较,大的放右边,小的放左边。
2,第一轮比较完毕之后,最大值就已经确定,第二轮可以少循环一次,后面以此类推。
3,如果数组中有n个数据,总共我们只要执行n-1轮的代码就可以。
*/
//1.定义数组
int[] arr = {2, 4, 5, 3, 1};
//2.利用冒泡排序将数组中的数据变成 1 2 3 4 5
//外循环:表示我要执行多少轮。 如果有n个数据,那么执行n - 1 轮
for (int i = 0; i < arr.length - 1; i++) {
//内循环:每一轮中我如何比较数据并找到当前的最大值
//-1:为了防止索引越界
//-i:提高效率,每一轮执行的次数应该比上一轮少一次。
for (int j = 0; j < arr.length - 1 - i; j++) {
//i 依次表示数组中的每一个索引:0 1 2 3 4
if(arr[j] > arr[j + 1]){
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
print(arr);
}
private static void print(int[] arr) {
//3.遍历数组
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
}