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;

  1. public class Test02 {
  2. public static void main(String[] args) {
  3. int[] arr=new int[]{1,2,3,4,5,6,7,8,9,10};
  4. int number=11;
  5. System.out.println(numberSesrch(arr,11));
  6. }
  7. private static int numberSesrch(int[] arr,int number) {
  8. //定义最大索引和最小索引
  9. int min=0;
  10. int max=arr.length-1;
  11. while(min<=max){
  12. int mid=(min+max)>>1;
  13. //如果number大于mid指向的值
  14. if (number>arr[mid]){
  15. min=mid+1;
  16. }else if (number<arr[mid]){
  17. max=mid-1;
  18. }else{
  19. return mid;
  20. }
  21. }
  22. return -1;
  23. }
  24. }

2.冒泡排序

3.快排

  1. public class Test03 {
  2. public static void main(String[] args) {
  3. int[] arr={8,9,10,1,5,6,4,3,2,7};
  4. quitesort(arr,0,arr.length-10);
  5. System.out.println(arr[i]);
  6. }
  7. private static void quitesort(int[] arr, int left, int right) {
  8. if (left>right){
  9. return;
  10. }
  11. int left0=left;
  12. int right0=right;
  13. //循环
  14. while(left!=right){
  15. //循环在右边找出比基准数小的
  16. while(arr[left0]>=arr[right]&&right>left){
  17. right--;
  18. }
  19. //循环在左边找比基准数大的
  20. while(arr[left0]<=arr[left]&&right>left){
  21. left++;
  22. }
  23. int empt=arr[right];
  24. arr[right]=arr[left];
  25. arr[left]=empt;
  26. }
  27. //基准数arr[left0]归位
  28. int empt=arr[left];
  29. arr[left]=arr[left0];
  30. arr[left0]=empt;
  31. //以基准数为点左右分割数组继续调用方法(递归)
  32. quitesort(arr,left0,left-1);
  33. quitesort(arr,left+1,right0);
  34. }

}

arrays类

image.png
image.png
image.png
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));
**}
}