二分查找,冒泡排序JAVA实现
可能以后面试会手写一个二分查找或者冒泡排序,先写个笔记,后面再看
二分查找:1.待查找的序列有序。2.每次查找范围缩小为原来一半。
public int myBinarySearch(int[] arr,int target){
int start = 0;//查找范围的起点
int end = arr.length-1;//查找范围的终点
//二分查找的过程,每次找出范围的中点进行比较,更新下一次的查找范围
//这个范围内至少有一个元素,对应于start<=end这个条件
while (start<=end){
int temp = (start+end)/2;
if(arr[temp] == target){
return temp;
}else if(arr[temp]>target){
end = temp-1;
}else {
start = temp+1;
}
}
//没有查找到的情况
return -1;
}
}
冒泡排序:
我写的没有优化,即每次都是从最后开始,将最小的元素“冒泡一般”放在前面位置。
public class Main {
public static void main(String[] args) {
int[] num = new int[]{7,5,2,12,13,1634,123};
int n = num.length;//总的元素个数
//每次循环可以排序好一个位置,总共需要排序好n-1个位置
for (int i = 0; i <n-1; i++) {
//每次冒泡只需要比较到第i个元素即可
for (int j = n-1; j >i; j--) {
if(num[j]<num[j-1]){
int temp = num[j];
num[j] = num[j-1];
num[j-1] = temp;
}
}
}
for(int i:num) System.out.println(i);
}
}