欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
快速排序算法的JAVA實(shí)現
 

package Utils.Sort;

 

/**

*快速排序,要求待排序的數組必須實(shí)現Comparable接口

*/

public class QuickSort implements SortStrategy

{

       private static final int CUTOFF = 3;             //當元素數大于此值時(shí)采用快速排序

 

       /**

       *利用快速排序算法對數組obj進(jìn)行排序,要求待排序的數組必須實(shí)現了Comparable接口

       */

       public void sort(Comparable[] obj)

       {

              if (obj == null)

              {

                     throw new NullPointerException("The argument can not be null!");

              }

 

              quickSort(obj, 0, obj.length - 1);

       }

 

       /**

       *對數組obj快速排序

       *@param obj 待排序的數組

       *@param left 數組的下界

       *@param right 數組的上界

       */

       private void quickSort(Comparable[] obj, int left, int right)

       {

              if (left + CUTOFF > right)

              {

                     SortStrategy ss = new ChooseSort();

                     ss.sort(obj);

              }

              else

              {

                     //找出樞軸點(diǎn),并將它放在數組最后面的位置

                     pivot(obj, left, right);

                    

                     int i = left, j = right - 1;

                     Comparable tmp = null;

                     while (true)

                     {

                            //i, j分別移到大于/小于樞紐值的位置

                            //因為數組的第一個(gè)和倒數第二個(gè)元素分別小于和大于樞紐元,所以不會(huì )發(fā)生數組越界

                            while (obj[++i].compareTo(obj[right - 1]) < 0)    {}

                            while (obj[--j].compareTo(obj[right - 1]) > 0)      {}

                           

                            //交換

                            if (i < j)

                            {

                                   tmp = obj[i];

                                   obj[i] = obj[j];

                                   obj[j] = tmp;

                            }

                            else

                                   break;

                     }

 

                     //將樞紐值與i指向的值交換

                     tmp = obj[i];

                     obj[i] = obj[right - 1];

                     obj[right - 1] = tmp;

 

                     //對樞紐值左側和右側數組繼續進(jìn)行快速排序

                     quickSort(obj, left, i - 1);

                     quickSort(obj, i + 1, right);

              }

       }

 

       /**

       *在數組obj中選取樞紐元,選取方法為取數組第一個(gè)、中間一個(gè)、最后一個(gè)元素中中間的一個(gè)。將樞紐元置于倒數第二個(gè)位置,三個(gè)中最大的放在數組最后一個(gè)位置,最小的放在第一個(gè)位置

       *@param obj 要選擇樞紐元的數組

       *@param left 數組的下界

       *@param right 數組的上界

       */

       private void pivot(Comparable[] obj, int left, int right)

       {

              int center = (left + right) / 2;

              Comparable tmp = null;

             

              if (obj[left].compareTo(obj[center]) > 0)

              {

                     tmp = obj[left];

                     obj[left] = obj[center];

                     obj[center] = tmp;

              }

              if (obj[left].compareTo(obj[right]) > 0)

              {

                     tmp = obj[left];

                     obj[left] = obj[right];

                     obj[right] = tmp;

              }

              if (obj[center].compareTo(obj[right]) > 0)

              {

                     tmp = obj[center];

                     obj[center] = obj[right];

                     obj[center] = tmp;

              }

              //將樞紐元置于數組的倒數第二個(gè)

             

              tmp = obj[center];

              obj[center] = obj[right - 1];

              obj[right - 1] = tmp;

       }

}

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
各種排序算法JAVA實(shí)現
面試中的排序算法總結
數據結構與算法——排序算法(5)——快速排序
LeetCode 912. 排序數組
Python動(dòng)圖展示八大常用排序算法,讓你一次看個(gè)夠
快速排序及其優(yōu)化
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久