//交换数组中的两个数

    public static void Swap(int i,int j,int arr[])

    {

       if(i>=0&&i<=arr.length-1&&j>=0&&j<=arr.length-1)//确保两个数存在

       {

           int temp=arr[i];

           arr[i]=arr[j];

           arr[j]=temp;

       }

    }

    //冒泡排序法

    public static void MaoPaoSort(int arr[])

    {     

       //冒泡排序,外层循环决定走几趟,n个数需要n-1趟10个数,则需9趟,1个数,则需0趟

       int temp;

       for(int i=0;i<arr.length-1;i++)

       {

           for(int j=0;j<arr.length-1-i;j++)

           {

              if(arr[j]>arr[j+1])//交换位置,小的在前面

              {

                  temp=arr[j];

                  arr[j]=arr[j+1];

                  arr[j+1]=temp;

              }

           }

       }         

    }

    //选择排序法

    public static void SeclectSort(int arr[])

    {

       int min=0;

       int flag=0;

       for(int i=0;i<arr.length-1;i++)

       {

           min=arr[i];//假设第i个数暂时为最小的

           flag=i;//记录位置

           //寻找在第i个后面的数中比它小的数字

           for(int j=i+1;j<arr.length;j++)

           {

              if(min>arr[j])

              {

                  min=arr[j];

                  flag=j;                 

              }

           }

           //接下来交换第i个和和其后面最小的数字,使得数组中第i个数是最小的

           min=arr[i];

           arr[i]=arr[flag];

           arr[flag]=min;             

       }

    }

      

    //插入排序法

    public static void InsertSort(int arr[])

    {

       for(int i=1;i<arr.length;i++)

       {

           int insertVal=arr[i];//要插入的数

           int index=i-1;//index记录要插入的位置

           //寻找插入的位置

           while(index>=0&&insertVal<arr[index])//

           {

              arr[index+1]=arr[index];

              index--;

           }

           arr[index+1]=insertVal;

       }

    }

    //快速排序法

    public static void QuickSort(int left,int right,int arr[])

    {

       if(left<right)

       {

           int i=left-1;

           int j=right+1;

           int mid=arr[(left+right)/2];

           while(true)

           {

              while(arr[++i]<mid);

              while(arr[--j]>mid);

              if(i>=j)

              {break;}

              Swap(i,j,arr);                 

           }

           QuickSort(left,--i,arr);

           QuickSort(++j,right,arr);

       }

    }

    //二分查找

    public static int TwoFind(int leftIndex,int rightIndex,int tarVal,int arr[])

    {

       if(leftIndex>=0&&leftIndex<arr.length&&rightIndex>=0

              &&rightIndex<arr.length&&leftIndex<=rightIndex)

       {

           int midIndex=(leftIndex+rightIndex);

           int mid=arr[midIndex];

           if(mid>tarVal)

           return TwoFind(leftIndex,midIndex-1,tarVal,arr);

           else if(mid<tarVal)

           return TwoFind(midIndex+1,rightIndex,tarVal,arr);

           else

              return midIndex;

       }

       else

           return -1;

    }