1.二分查找法
前提条件:二分查找的前提条件是数组里的元素是有序排列的
例如:int[] arr= new int{1,2,3,4,5,6,7,8}
1.定义需要查找到数number,
2.定义索引最小值和最大值,
3.循环查找,条件min<=max;
4.mid=(min+max)>>1;
5.如果mid指向的元素大于number则,max=mid-1;
6.如果mid指向的元素小于number则min=mid+1;
7.如果mid指向的元素等于number子返回索引
8.如果以上条件都不满足则返回-1;
public class Test02 {public static void main(String[] args) {int[] arr=new int[]{1,2,3,4,5,6,7,8,9,10};int number=11;System.out.println(numberSesrch(arr,11));}private static int numberSesrch(int[] arr,int number) {//定义最大索引和最小索引int min=0;int max=arr.length-1;while(min<=max){int mid=(min+max)>>1;//如果number大于mid指向的值if (number>arr[mid]){min=mid+1;}else if (number<arr[mid]){max=mid-1;}else{return mid;}}return -1;}}
2.冒泡排序
3.快排
public class Test03 {public static void main(String[] args) {int[] arr={8,9,10,1,5,6,4,3,2,7};quitesort(arr,0,arr.length-10);System.out.println(arr[i]);}private static void quitesort(int[] arr, int left, int right) {if (left>right){return;}int left0=left;int right0=right;//循环while(left!=right){//循环在右边找出比基准数小的while(arr[left0]>=arr[right]&&right>left){right--;}//循环在左边找比基准数大的while(arr[left0]<=arr[left]&&right>left){left++;}int empt=arr[right];arr[right]=arr[left];arr[left]=empt;}//基准数arr[left0]归位int empt=arr[left];arr[left]=arr[left0];arr[left0]=empt;//以基准数为点左右分割数组继续调用方法(递归)quitesort(arr,left0,left-1);quitesort(arr,left+1,right0);}
arrays类



public class Text01 {
public static void main(String[] args) {
int[] arr=new int[]{5,6,4,2,3,1,9,8,7};
//将数组排序
Arrays.sort(arr);
//利用binarySearch()方法找到所在的元素索引,注意这个方法利用的二分查找法
int i = Arrays.binarySearch(arr, 5);
System.out.println(i);
//将数组转换成字符串输出
System.out.println(Arrays.toString(arr));
**}
}
