- 排序是將一串數據按照其某個或者某些關鍵字的大小進行遞增或遞減排列的操做我,一般指的排序是升序,排序方式是原地排序
- 下面介紹下冒泡排序
冒泡排序
- 原理:在無序區間,經過相鄰數的比較,將最大的數冒泡到無序區間的最後,持續這個過程,直到數組總體有序
- 冒泡排序是一個穩定的排序
實現方式
public void bubbleSort(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
//定義標誌位來判斷待排序區間是否有序
boolean isSorted = true;
for (int j = 0; j < array.length - 1 - i; j++) {
if (array[j] > array[j + 1]) {
swap(array, j, j + 1);
//只要發生交換說明待排序區間初始並非有序
isSorted = false;
}
}
if(isSorted) {
break;
}
}
}
private void swap(int[] array, int i, int j) {
int tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
性能分析
- 時間複雜度:
- 最好的狀況:待排序有序時,時間複雜度爲O(N)
- 最壞的狀況:待排序逆序時,時間複雜度爲O(N^2)
- 平均狀況:時間複雜度 爲O(N^2)
- 空間複雜度:O(1)
- 穩定性:穩定
- 初始數據越接近有序,時間效率越高