java的 最大值 选择排序 冒泡排序 二分查找

来源:互联网 发布:易观国际数据 编辑:程序博客网 时间:2024/06/05 07:00


/**
  以下对java的 最大值 选择排序 冒泡排序 二分查找做了一下总结
 
*/
public class Test9{


  public static void main(String[] args){




         int[] arr={12,5,17,8,55,41,9};
         int index=binarySearch(arr,8);
         System.out.println("索引值为:"+index);
         System.out.println("最大值为:"+getMax(arr));
         System.out.println("选择排序为:");
         selectSort(arr);
         System.out.println("\n冒泡排序为:");
         bubbleSort(arr); 
        
   }




 /**
求一个数组中的最大值
*/
  public static int getMax(int[] arr){
       int max=arr[0];
       for(int i=1;i<arr.length;i++){
            if(arr[i]>max){
                  max=arr[i];
               }


       }


        return max;
  }






/**
  java 排序算法思路:
  选择排序:使用一个元素与其他元素挨个比较,符合条件交换位置


*/


 public  static void selectSort(int[]  arr){
     for(int j=0;j<arr.length-1;j++ ){
       for(int i=j+1;i<arr.length;i++){
            
            if(arr[i]>arr[j]){
                //交换位置
                int temp=arr[i];
                arr[i]=arr[j];
                arr[j]=temp;
               }
          }


      }


      //遍历效果
      for(int i=0;i<arr.length;i++){
           System.out.print(arr[i]+",");
    }


 }




/**
 冒泡排序:相邻的两个元素挨个比较
大的元素放在右边,小的放在左边
*/


  public static void bubbleSort(int[] arr){
     //把最大值放在最后位置
     for(int j=0;j<arr.length-1;j++){//控制轮数
      for(int i=0;i<arr.length-1-j;i++){
          //相邻元素比较
       if(arr[i]>arr[i+1]){
          int tem=arr[i];
          arr[i]=arr[i+1];
          arr[i+1]=tem;


          }
  
        } 
     }
//遍历效果
      for(int i=0;i<arr.length;i++){
           System.out.print(arr[i]+",");
    }
  }




/**
  二分查找思路:
     定义三个变量分别记录要查找的元素的范围最大索引值,最小
索引值,中间的索引值,每次都是用中间索引值的元素与目标元素相比
如果不是就缩小范围    注意:要先排序 


   
*/


    //查找指定元素索引值
   public static int binarySearch(int[] arr,int target){
       /**
          定义三个变量分别记录最大,最小,中间的查找范围索引值
         */
         int max=arr.length-1;
         int min=0;
         int mid=(min+max)/2;  
         while(true){
            if(target>arr[mid]){
                min=mid+1;
              }else if(target<arr[mid]){
                max=mid-1;
              }else{//找到元素
                    return mid;
              }  
             /**
              重新计算中间的索引值   
              */
             mid=(min+max)/2;  
    
             //没有找到的情况
             if(max<min){
                   return -1;
              }
        }
  
   }




















  }

阅读全文
0 0
原创粉丝点击