Java实现冒泡排序+二分法查找

记录一下基础的排序和查找:

public class java_test {
  public static void main(String[] args)
  {
   //从键盘输入10个整数存入数组arry
   int[] array=new int[10];
   System.out.println("请输入十个整数");
   
   for(int i=0;i<array.length;i++)
   {
    Scanner input=new Scanner(System.in);
    array[i]=input.nextInt();
   }
   maopao(array);
   System.out.println("当前查找的数在数组位置为:"+search(array,想要查找的num));
  }
  //使用冒泡排序对当前数组进行从小到大的排序
  //相邻的两个数进行对比,交换,直到最小或最大的数冒在上面, 排序结束
  public static void maopao(int[] array)
  {
   int i,j;
   for(i=0;i<array.length-1;i++)
   {
    for(j=0;j<array.length-1-i;j++)
    {
     if(array[j]>array[j+1])
     {
      int temp=0;
      temp=array[j];
      array[j]=array[j+1];
      array[j+1]=temp;
     }
    }
   }
   System.out.println("排序后数组为:"+Arrays.toString(array));
  }
  
  //使用二分法查找当前的num在数组里的位置
  public static int search(int[] array,int num)
  {
   int low,high,mid;
   low=0;
   high=array.length-1;
   //循环查找当前的范围
   while(low<=high)
   {
    //mid取当前数组的中间位置
    mid=(low+high)/2;
    //当查找的num小于mid的数时,就缩小查找的范围,把范围确认在(low,mid-1);
    if(num<array[mid])
    {
     high=mid-1;
    }else 
     //当查找的num小于mid的数时,就缩小查找的范围,把范围确认在(mid+1,high);
     if(num>array[mid])
     {
      low=mid+1;
     }else 
      //当查找的num等于mid的数时,直接返回 mid的位置;
      if(num==array[mid])
     {
      return mid;
     }
   }
   //若查找不成功,返回-1
   return -1;
   
  }
}

你可能感兴趣的:(基础算法)