冒泡排序
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;
}
网友评论