对数组的排序,折半查找,遍历,求取最大值

来源:互联网 发布:魔方模拟软件 编辑:程序博客网 时间:2024/05/11 04:52

ArrayTools.java

//遍历数组,最大值,排序,二分查找
/**
 
 <h1>ArrayTools操作数组的便捷类,包括对数组的排序,折半查找,遍历,求取最大值</h1>
 @author 石松
 @version 1.0
*/
public class  ArrayTools
{
 public ArrayTools(){} 
 /**
 binarySearch方法实现了对数组的折半查找法,如果元素存在于数组中,
 返回所在位置的角标,不在数组中,返回小于0的数
 @param arr ,key 传递数组和需要查找的关键字
 @return mid 所在数组的下标
 */
    public static int binarySearch(int[] arr ,int key)
 {
   int min = 0;
   int max = arr.length - 1;
   int mid = 0;
   while(min <= max)
  {
         mid = (min+max)/2;
   if(key > arr[mid])
   {
      min = mid + 1;
   }
   else if(key < arr[mid])
   {
     max = mid - 1;
   }
   else
   {
     return mid;
   }
     }
  return -1;
 }
     /**
   select方法,对数组进行排序,次算法是一个经过优化的算法
   @param arr 传递整型数组
 */
 public static void select(int[] arr)
 {
   for(int x = 0 ; x < arr.length - 1 ;x++)
  {
        for(int y = x + 1; y < arr.length; y++)
      {
        if(arr[x] > arr[y])
       {
           swap(arr,x,y);
       }
         }
     }
 }

   /**
    数组换位的专用函数
   */
 private static void swap(int[] arr , int x ,int y)
 {
     int temp = arr[x];
  arr[x] = arr[y];
  arr[y] = temp;
 }
 /**
  getMax方法,获取数组中的最大值
  @param arr 传递整型数组
  @return max 最大值
 */
    public static int getMax(int[] arr)
 {
   int max = 0;
   for(int x = 1 ; x < arr.length ; x++)
   {
      if(arr[max] < arr[x])
    {
     max = x;
   }
   }
   return arr[max];
 }

    /**
   printArr方法,将数组打印在控制台上
  @param arr 传递整型数组
 */
 public static void printArr(int[] arr)
 {
    System.out.print("[");
   for(int x = 0; x < arr.length; x++)
   {
     if((x!= arr.length-1))
   {
     System.out.print(arr[x]+",");
   }
   else
   {
   System.out.print(arr[x]+"");
   }
   }
   System.out.println("]");
 }
}

 

 

 

TestArrayArray.java

package arraytools;
class TestArrayTools
{
 public static void main(String[] args)
 {
  int[] arr ={3,2,56,78,23,723,65};
  ArrayTools.printArr(arr);
  ArrayTools.select(arr);
  ArrayTools.getMax(arr);
  ArrayTools.printArr(arr);
  
 /* for (int x =0; x<args.length;x++ )
  {
   System.out.println(args[x]);
  }*/

 }
}

 

结果:

[3,2,56,78,23,723,65]
723
[2,3,23,56,65,78,723]

0 0