T(O) = O(n*n)
package org.algorithm;
/**
* 冒泡排序
*
* T(O) = O(n*n)
* @author Administrator
*
*/
public class BubbleSort {
private static int[] arr = { 10, 4, 13, 4, 5, 16, 9, 10 };
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
BubbleSort bsort = new BubbleSort();
bsort.bubbleSort();
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
public void bubbleSort(){
boolean isSwapped = false;
for(int outer = 0;outer<arr.length;outer++){
isSwapped = false;
for(int inner=outer;inner<arr.length;inner++){
if(arr[inner]<arr[outer]){
swapByIndex(arr,inner,outer);
isSwapped = true;
}
}
/**
* 内循环没发生交换,说明已经排好序了,结束
*/
if(!isSwapped){
break;
}
}
}
/**
* swap value
* elegant haha
* @param a
* @param b
*/
private void swapByIndex(int[] _arr,int indexA,int indexB){
/**
* 一定要判断,否则 会把元素清0
*/
if(indexA==indexB){
return;
}
_arr[indexA]^=_arr[indexB];
_arr[indexB]^=_arr[indexA];
_arr[indexA]^=_arr[indexB];
}
}