冒泡排序
本文采用Java书写冒泡排序,其他语言类似可以借鉴着写
-
思想:冒泡排序的思想是相邻的元素两两比较,保证相邻两个数左侧小(大)于右侧,这样一趟比较下来,最大(小)值就会排列在一端。整个过程如同气泡冒起,因此被称作冒泡排序
-
效果图:下图可以很形象的表现冒泡排序的过程
算法复杂度和稳定性
- 稳定性:
冒泡排序值相等时不交换,因此具有稳定性
- 复杂度:
这里仅仅来说明时间复杂度为:O(N^2)
代码实现
/**
* @Description: 冒泡排序
* @PackageName: Sort
* @ClassName: BubbleSort
* @Author: Y-peak
* @Date: 2021.08.26 09:15 星期四
*/
public class BubbleSort {
//冒泡排序
public static void bubbleSort(int[] arr){
if(arr == null || arr.length < 2)
return;
for (int i = arr.length-1; i >0 ; i++) {
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)
{
arr[i] = arr[i]^arr[j];
arr[j] = arr[i]^arr[j];
arr[i] = arr[i]^arr[j];
}
}