目录
二分查找
public static int binary_Search(int[] a, int target){
int low=0;
int high=a.length-1;
while(low<=high){ //若是最大最小值交叉了,说明找不到
int mid=(low+high)/2;
if(a[mid]==target)
return mid;
else if(a[mid]>target)
high=mid-1; //最大值变成中位数上一位
else
low=mid+1; //最小值变成中位数下一位
}
return -1;
}
冒泡排序
static int[] bubble_Sort(int[] a){
int temp;
for (int i=0; i<a.length; i++)
for (int j = 0; j < a.length-i-1; j++) {
if (a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
return a;
}
选择排序
public static int[] selection_Sort(int[] a){
for (int i = a.length-1; i>0 ; i--) {
int indexMax=0; //相比冒泡不用每次都交换,只是最后把找出来的最大值和天花板值交换
int max=a[0];
for (int j = 0; j <=i; j++) { //找出第n大的值(n=1,2,3。。。)
if (a[j]>max){
indexMax=j;
max=a[j];
}
}
int temp=a[i]; //只交换了一次
a[i]=max;
a[indexMax]=temp;
}
return a;
}
插入排序
public static int[] insert_Sort(int[] arr) {
for (int i = 1; i < arr.length; i++) { //好比在打牌时理顺序,分左边理好的队列和右边没理好的;
int temp=arr[i]; //将没理好的、最左边的牌先保存
int index = i; //理好的牌从右往左,找到待插入位置的索引值
for (int j = i; j >0&&arr[j-1]>temp; j--) { //然后从右往左比较理好的队列,移动的同时,找到合适插入位置
arr[j]=arr[j-1];
index--;
}
arr[index]=temp;
}
return arr;
}