冒泡排序
1.原理圖:
2.代碼實踐
private Integer[] arr = new Integer[]{5, 5, 1, 9, 44, 78, 11, 3};
/**
* 冒泡排序
* 原理:相鄰元素兩兩比較,大的往後放
*/
private void bubbleSort() {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
Log.i(TAG, "bubbleSort" + Arrays.toString(arr));//{1,3,5,5,9,11,44,78}
}
二分查找
(基於有序數組)
1.原理圖:
2.代碼實踐:
private Integer[] arr = new Integer[]{1,3,5,5,9,11,44,78};
/**
* 二分查找
* 前提:數組是有序數組
* 原理:每一次都查中間的那個元素,比較大或者小就能減少一半的元素
*/
private int binarySearch(int value) {
int minIndex = 0;
int maxIndex = arr.length - 1;
while (minIndex <= maxIndex) {
int midIndex = (minIndex + maxIndex) >> 1;
if (value== arr[midIndex]) {
return midIndex;
} else if (value< arr[midIndex]) {
maxIndex = midIndex - 1;
} else if (value> arr[midIndex]) {
minIndex = midIndex + 1;
}
}
return -1;
}