1: 冒泡最简单一种:
/**
* 算法效率o(n*n)
* @param array
* @return
*/
public void bubbleSort(int[] array) {
if(array == null) {
throw new IllegalArgumentException("array can not be null");
}
int size=array.length;
for(int i=0; i < size; i++) {
for(int j=i + 1; j < size; j++) {
swap(array, i, j);
}
}
}
private void swap(int[] array, int i, int j) {
if(array[i] < array[j]) {
int temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
2: 快速排序
原理:0: 一般取第一个数作为基数BASE, left,right分别指向开头和结尾
1:从right 开始取arry[right] 和BASE比较,如大right++,如小arry[left]=arry[right]
2: 从left开始取arry[left]和BASE比较,如小left++,如大arry[right]=arry[]left]
3: left=right 时arry[left]=BASE, 开始递归
/**
* 快速排序
* @param array
* @return
*/
public void quitSort(int[] array, int left, int right) {
int temp=array[left];
int i=left;
int j=right;
if(i >= j) {
return;
}
while(i != j) {
while(j > i && array[j] >= temp) {
j--;
}
if(j > i) {
array[i]=array[j];
}
while(j > i && array[i] <= temp) {
i++;
}
if(j > i) {
array[j]=array[i];
}
}
array[i]=temp;
quitSort(array, left, i - 1);
quitSort(array, i + 1, right);
}