二分查找
前提条件:数组中的数据必须是有序的
核心逻辑:每次排除一半的查找范围

java
public static int binarySearch(int[] arr,int number){
int min=0;
int max=arr.length-1;
while(true){
if(min>max){
return -1;
}
int mid=(min+max)/2;
if(arr[mid]>number){
max=mid-1;
}
else if(arr[mid]<number){
min=mid+1;
}
else{
return mid;
}
}
冒泡排序
冒泡排序:相邻的数据两两比较,小的放前面,大的放后面
java
public static void BubbleSort(int[] arr){
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;
}
}
}
}
外循环:表示要执行多少轮,n个数据,执行n-1轮
内循环:每一轮中找到最大值,-1防止索引越界
选择排序
选择排序:从0索引开始,拿着每一个索引上的元素和后面的元素依次比较,小的放前面。
java
public static void SelectSort(int[] arr) {
for (int i = 0; i < arr.length-1; i++) {
for (int j = i+1; j < arr.length; j++) {
if(arr[i] > arr[j]) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
插入排序
插入排序:将0索引的元素看做是有序的,把N+1索引的元素到最后一个当成是无序的。
遍历无序的数据,将遍历的元素插入有序序列适当的位置
java
public static void insertSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
for (int j = i-1; j >=0&&arr[j]> arr[j+1]; j--) {
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}