排序算法-冒泡排序(Bubble Sort)

时间:2021-07-22 12:59:48
package com.wangzhu.sort;
/**
* 冒泡排序算法
* @ClassName: BubbleSort
* @Description: TODO
* @author wangzhu
* @date 2013-8-12 上午10:37:28
*
*/
public class BubbleSort { /**
* @param args
*/
public static void main(String[] args) {
int[] arr1 = new int[]{10,9,8,7,6,5,4,3,2,1};
sort(arr1);
int[] arr2 = new int[]{1,2,3,4,5,6,7,8,9,10};
sort(arr2);
int[] arr3 = new int[]{1,1,1,2,2,3,3,3,4,5};
sort(arr3);
int[] arr4 = new int[]{2,2,1,3,1,1,1,2,3,3,2};
sort(arr4);
int[] arr5 = new int[]{11,-9,-8,17,-6,51,14,31,42,51};
sort(arr5);
int[] arr6 = new int[]{-1,-2,-3,-4,-5,-6,-7,-8,-9,-10};
sort(arr6);
int[] arr7 = new int[]{-1,-1,-1,-2,-2,-3,-3,-3,-4,-5};
sort(arr7);
int[] arr8 = new int[]{2,2,1,2,3,4,5,6,8,9,10,10,10};
sort(arr8); } /**
* 冒泡排序:每次将最小的放在最前头
* @param arr
*/
public static void sort(int[] arr){
for(int i = 0 ,len = arr.length; i < len;i ++){
boolean isSort = true;//记录每一趟是否进行了交换,若是没有,则说明数列已排好序
//从最后面的元素开始进行,直到最前面的第二个未排序的元素
for(int j = len - 1;j > i; j--){
//前面元素的大于后面的元素,则交换
if(arr[j - 1] > arr[j]){
int temp = arr[j - 1];
arr[j - 1] = arr[j];
arr[j] = temp;
isSort = false;
}
}
if(isSort){
break;
}
}
show(arr);
} private static void show(int[] arr) {
for(int num:arr){
System.out.print(" " + num);
}
System.out.println("===============");
}
}

根据冒泡排序算法的定义,简单的实现了一下,仅供参考,若有不对,请指出,谢谢!