冒泡算法
/**
* 冒泡排序
* 核心思想是相鄰兩兩比較並交換
* @param array
*/
public static void bubbleSort(int[] array){
for (int i = 0; i < array.length -1 ; i++) {
for (int j = 1; j < array.length - i; j++) {
if(array[j] < array[j-1]){
int temp = array[j];
array[j] = array[j-1];
array[j-1] = temp;
}
}
}
}
選擇排序
/**
* 選擇排序
* 核心思想是先選擇出最大(最小),然後再交換位置
* @param array
*/
public static void chooseSort(int[] array){
int maxIndex;
for (int i = 0; i < array.length -1; i++) {
maxIndex = i;
for (int j = i + 1; j < array.length; j++) {
if(array[j] < array[maxIndex]){
maxIndex = j;
}
}
int temp = array[maxIndex];
array[maxIndex] =array[i];
array[i] = temp;
}
}
快速排序
/**
* 快速排序
* 核心思想是二分法
* 設定基準點,找到左端比它大的,右端比它小的,交換
* 當左右相等時,交換基準點與其位置
* @param array
*/
public static void binarySort(int[] array){
binarySortLF(array, 0, array.length-1);
}
private static void binarySortLF(int[] array, int start, int end){
if(start >= end)
return;
int left = start, right = end;
int pivot = left;
int temp;
while(left < right){
while(array[right] >= array[pivot] && left < right){
right--;
}
while(array[left] <= array[pivot] && left < right){
left++;
}
temp = array[right];
array[right] = array[left];
array[left] =temp;
}
temp = array[left];
array[left] = array[pivot];
array[pivot] =temp;
for (int i = 0; i <array.length ; i++) {
System.out.print(array[i] + " ");
}
System.out.println();
binarySortLF(array, start, left-1);
binarySortLF(array, left + 1, end);
}