• 常见的排序方法


    //交换数组中的两个数

        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;

        }

  • 相关阅读:
    中小企业需要企业邮箱吗?中小性公司选什么邮箱性价比高?
    主流电子邮箱有哪些?你的邮箱选对了吗?
    外贸邮箱选择什么企业邮箱更安全?
    企业邮箱适用于哪些行业?公司邮箱都用什么?
    如何注册公司收费邮箱?注册公司邮箱有哪些优势?
    convert_cyr_string — 将字符由一种 Cyrillic 字符转换成另一种
    chunk_split — 将字符串分割成小块
    addslashes — 使用反斜线引用字符串
    addcslashes — 以 C 语言风格使用反斜线转义字符串中的字符
    extract — 从数组中将变量导入到当前的符号表
  • 原文地址:https://www.cnblogs.com/hao02171990/p/3264087.html
Copyright © 2020-2023  润新知