冒泡排序是一种常见的算法,排序过程和水中气泡上升的原理相似;在整个排序的过程中,不断的将两个相邻元素作比较,较小者向上浮,较大者向下沉。如果前一个元素比后一个元素大,则交换它们的位置。通过重复的循环遍历数组元素,直到没有可以交换的元素,则整个数组的排序完成。
public class Bubble {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {2,9,1,5,8,7}; //定义一个数组
System.out.print("冒泡排序前:");
printArray(arr); //打印该数组元素
bubbleSort(arr); //调用排序方法
System.out.print("冒泡排序后:");
printArray(arr);
}
//定义打印数组的方法
public static void printArray(int[] arr) {
// 循环遍历数组的元素
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]+" "); //打印元素和空格
}
System.out.println(" ");
}
//定义数组排序的方法
public static void bubbleSort(int[] arr) {
//定义外层循环
for(int i=0;i<arr.length-1;i++) {
//定义内层循环
for(int j=0;j<arr.length-i-1;j++) {
if (arr[j]>arr[j+1]) { //两个相邻元素作比较
//交换两个元素
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
System.out.print("第"+(i+1)+"轮排序后:");
printArray(arr);
}
}
}
结果:
冒泡排序的时间复杂度是O(n^2),因对n个数排序,需要扫描n x n次。