package com.sort.admin;
public class BubbleSort {
/**
* 冒泡排序 - O(n^2)
*
* 循环N次,每次循环里面两两比较,大的值往后挪,找出最大的值放在数组最后
*
* <p>
* 0 ~ N-1 第一次从 0 ~ N-1 找出最大值
* 0 ~ N-2 第二次从 0 ~ N-2 找出最大值
* 0 ~ N-3 第三次从 0 ~ N-3 找出最大值
* ~
* 0 ~ 1 第 N-1 次从 0 ~ 1 找出最大值
*
* 第一个for循环:控制循环次数
* 第二个for循环:找出每次中最大值放在后面
* </p>
*
* @param arr 需要排序的数组
*
*/
public static void sort(int[] arr) {
if (arr == null || arr.length < 2) {
return;
}
// 从N个数中找出最大值放在右边,一共要选择N次,假设arr[0]是最大
for (int i = arr.length - 1; i > 0; i--) {
// 从N个数中找出最大值放在右边
for (int j = 0; j < i; j++) {
if (arr[j] > arr[j + 1]) {
swap(arr, j, j + 1);
}
}
}
}
public static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
public static void print(int[] arr) {
System.out.println("arr -- >");
for (int j : arr) {
System.out.print(j + " ");
}
System.out.println();
}
public static void main(String[] args) {
int[] arr = {3, 2, 7, 5, 1, 9, 9, 4, 6, 8};
print(arr);
sort(arr);
print(arr);
}
}
冒泡排序
- 本文链接: https://sly.plus/archives/bubblesort
- 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议。转载请注明出处!