冒泡排序,选择排序、二分法查找图示以及代码实现
冒泡排序
请看下面的这个栗子:
需要排序的数组arr = {99,88,77,55,66,44};
具体排序细节各位客官请看图:
代码实现:
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {99,88,77,55,66,44};
bubbleSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void bubbleSort(int[] arr){
for (int i=0;i<arr.length;i++){
for(int j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
}
选择排序
请看下面第二个栗子:
需要排序的数组arr = {99,88,77,55,66,44};
public class selectSort {
public static void main(String[] args) {
int[] arr = {99, 88, 77, 55, 66, 44};
selectSort(arr);
System.out.println(Arrays.toString(arr));
}
public static void selectSort(int[] arr) {
int index;
for (int i = 0; i < arr.length; i++) {
index = i;
for(int j=i;j<arr.length;j++){
if(arr[index]>arr[j]){
int temp = arr[index];
arr[index] = arr[j];
arr[j] = temp;
}
}
}
}
}
二分法查找
二分法查找的前提是数组必须是按照升序排列的。比如下面这个栗子
arr = {44,55,66,77,88,99};
请看代码实现
public class BinarySearch {
public static void main(String[] args) {
int[] arr = {44, 55, 66, 77, 88, 99};
int i = binarySearch(arr, 55);
System.out.println(i);
}
public static int binarySearch(int[] arr, int ele) {
int minIndex = 0;
int maxIndex = arr.length - 1;
int midIndex = (minIndex + maxIndex) / 2;
while (minIndex <= maxIndex) {
if (ele == arr[midIndex]) {
return midIndex;
} else if (ele > arr[midIndex]) {
minIndex = midIndex + 1;
} else if (ele < arr[midIndex]) {
maxIndex = midIndex - 1;
}
midIndex = (minIndex + maxIndex) / 2;
}
return -1;
}
}