国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java排序算法之——快速排序

Yangyang / 3132人閱讀

摘要:代碼片段語言組織能力有限,直接上代碼排序算法之快速排序參數為需要排序的數組參數為數組的起始下角標即參數為數組的最后下角標即經過一輪排序,已經將數組分為左右兩部分進行遞歸排序總結快速排序的精髓在于分治思想,分而治之,它的時間復雜度為。

算法簡述

所謂快速排序算法是基于交換排序和遞歸思想的,它的速度的確如名字所示——快!并且這種一算一般被用作數量級比較大的數據當中,在大數據中有著很重要的地位。

算法流程

下面是快速排序算法的流程:
1、首先設定一個分界值(一般都是取中間或者第一個數),通過該分界值將數組分成左右兩部分; 2、將數組中大于等于分界值的數值放在分界值的右邊,將數組中小于等于分界值的數值放在分界值的左邊;
3、然后左右兩邊的數組又可以按照這個方式進行獨立排序;
4、重復這個過程,可以看出這是一種遞歸的思想,當遞歸到最后,整個數組也就排序完成;

實例講解

下面通過一個例子來講解一下:對數組int[] arr = {34,25,65,33,16,78,43,22}進行快速排序

取33為分界值,用i,j兩個引用從兩端進行遍歷,i從左邊依次遍歷直到找出比33大的數34(即arr[0]),j從右依次遍歷直至找到比33小的數22(即arr[7])交換這兩個數的位置:

{22,25,65,33,16,78,43,34}

然后i向右移,j向左移進行遍歷,經過一輪后:{22,25,16,33,65,78,43,34}

接下來通過遞歸調用,將左右數組進行排序。

代碼片段

語言組織能力有限,直接上代碼:

/**
     * 排序算法之快速排序
     * 參數arr為需要排序的數組
     * 參數left為數組的起始下角標即0
     * 參數right為數組的最后下角標即arr.length-1
     */
    private void quickSort(int[] arr,int left,int right)
    {
        int f,t;
        int rtemp,ltemp;
        ltemp = left;
        rtemp = right;
        f = arr[(left+right)/2];
        //經過一輪排序,已經將數組分為左右兩部分
        while(ltempf)
            {
                --rtemp;
            }
            if(ltemp<=rtemp)
            {
                t = arr[ltemp];
                arr[ltemp] = arr[rtemp];
                arr[rtemp] = t;
                --rtemp;
                ++ltemp;
            }
        }
        if(ltemp == rtemp)
        {
            ltemp++;
        }
        //進行遞歸排序
        if(left
總結

快速排序的精髓在于分治思想,分而治之,它的時間復雜度為O(nlog2n)。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/64400.html

相關文章

  • 算法學習路,排序快速排序Java實現)

    摘要:接下來我來說明快速排序的思路以及實現的代碼??焖倥判蛩悸肥紫仁嵌x一個變量,把數組的第一個元素的值賦給,然后定義兩個變量指向數組的第一個元素和最后一個元素。 今天突然想寫個排序,以前寫過,然后寫了之后一直出錯,然后自己百度了一下,看了別人寫的方法,自己也嘗試著寫了一個。接下來我來說明快速排序的思路以及實現的代碼。 快速排序思路:首先是定義一個變量key,把數組的第一個元素的值賦給key...

    charles_paul 評論0 收藏0
  • JavaScript算法 ,Python算法,Go算法,java算法,C#算法系列插入排序

    摘要:常見的內部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數排序等。插入排序在實現上,通常采用排序即只需用到的額外空間的排序,因而在從后向前掃描過程中,需要反復把已排序元素逐步向后挪位,為最新元素提供插入空間。 常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數排序等。用一張圖概括: showImg(https://segm...

    GeekQiaQia 評論0 收藏0
  • JavaScript算法 ,Python算法,Go算法,java算法,C#算法系列插入排序

    摘要:常見的內部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數排序等。插入排序在實現上,通常采用排序即只需用到的額外空間的排序,因而在從后向前掃描過程中,需要反復把已排序元素逐步向后挪位,為最新元素提供插入空間。 常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數排序等。用一張圖概括: showImg(https://segm...

    cgspine 評論0 收藏0
  • JavaScript算法 ,Python算法,Go算法,java算法,C#算法系列插入排序

    摘要:常見的內部排序算法有插入排序希爾排序選擇排序冒泡排序歸并排序快速排序堆排序基數排序等。插入排序在實現上,通常采用排序即只需用到的額外空間的排序,因而在從后向前掃描過程中,需要反復把已排序元素逐步向后挪位,為最新元素提供插入空間。 常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數排序等。用一張圖概括: showImg(https://segm...

    lufficc 評論0 收藏0

發表評論

0條評論

Yangyang

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<