zoukankan      html  css  js  c++  java
  • 常见的排序方法

    //交换数组中的两个数

        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;

        }

  • 相关阅读:
    $ is not defined
    Java排序算法(三):直接插入排序
    Onsctl 配置ONS服务(10G)
    在Google Drive上建立免费静态站点
    NB大了,增强现实走进安防行业了!竟然还有智能家居的规划!
    highcharts 阶梯图表并填充颜色(自己觉得:直角折线图表)
    nginx学习十一 nginx启动流程
    LeetCode_ZigZag Conversion
    SICP 习题 (1.39)解题总结
    bug 7715339 登录失败触发 ‘row cache lock’ 等待
  • 原文地址:https://www.cnblogs.com/hao02171990/p/3264087.html
Copyright © 2011-2022 走看看