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

資訊專欄INFORMATION COLUMN

java排序算法(快速排序)

khlbat / 3167人閱讀

摘要:快速排序思路在數組中尋一中間數,將比中間數小的放在左邊,將比中間數大的放在右邊從左邊開始找,找到比中間數大的,記住,從右邊開始找,找到比中間數小的,然后交換兩邊然后在左邊再尋一中間數,同坐上面的事,右邊也一樣,然后循環實現數組輸出中間值的位

快速排序 思路

在數組中尋一中間數,將比中間數小的放在左邊,將比中間數大的放在右邊
從左邊開始找,找到比中間數大的,記住,從右邊開始找,找到比中間數小的,然后交換兩邊
然后在左邊再尋一中間數,同坐上面的事,右邊也一樣,然后循環

實現

數組:[2,6,3,6,5,9,1]
輸出:[1 2 3 5 6 6 9 ]

private static void paixu(int[] arrs, int h, int e) {
        int head =h;
        int end = e;

        int x=(h+e)/2;//中間值的位置

        while (h <= e){//兩個指針還沒有遇到

            while (arrs[x]>arrs[h]){//從左邊開始找,找到比中間值大的數
                h++;
            }

            while (arrs[x]< arrs[e]){//從右邊開始查找,找到比中間值小的
                e--;
            }
            //交換值
            int m;
            m = arrs[h];
            arrs[h] = arrs[e];
            arrs[e] = m;        //2,6,3,6,5,9,1
            h++;                //2,1,3,6,5,9,6
            e--;                //2,1,3,5,6,9,6

        }
        //遞歸查詢左右兩邊
        if (head < e){
        paixu(arrs,head,e);}
        if (end > h){
        paixu(arrs,h,end);}
    }

為什么會有h++,e--呢
跟一下代碼
輸入數組[2,6,3,6,5,9,1]
第一次運行
中間位置是3,值是6
左邊是0,右邊是6

往下執行

h=1,e=6
數組變成[2,1,3,6,5,9,6]

執行加減操作 h=2,e=5;然后開啟第二輪的執行

假如不進行加減操作,
繼續執行的話,左邊繼續判斷,當查詢到6的時候停止,
右邊查詢,查詢到6的時候停止,然后交換,6和6交換,然后再次開啟循環,就會死循環,

當執行加減操作之后,再次判斷的時候,就會從交換數據之后的索引開始判斷,就不會再次判斷了,

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

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

相關文章

  • Java數據結構與算法——快速排序

    摘要:快排是一種不穩定的排序算法,在經過排序后,等值的元素的相對位置可能發生改變。 聲明:碼字不易,轉載請注明出處,歡迎文章下方討論交流。 前言:Java數據結構與算法專題會不定時更新,歡迎各位讀者監督。本篇文章介紹排序算法中最常用也是面試中最容易考到的排序算法——快排,包括快排的思想和原理、java快排代碼、快排的特點性能和快排的適用場景。 0、其他排序算法索引(待更) java數據結構與...

    Panda 評論0 收藏0
  • Java排序算法之——快速排序

    摘要:代碼片段語言組織能力有限,直接上代碼排序算法之快速排序參數為需要排序的數組參數為數組的起始下角標即參數為數組的最后下角標即經過一輪排序,已經將數組分為左右兩部分進行遞歸排序總結快速排序的精髓在于分治思想,分而治之,它的時間復雜度為。 算法簡述 所謂快速排序算法是基于交換排序和遞歸思想的,它的速度的確如名字所示——快!并且這種一算一般被用作數量級比較大的數據當中,在大數據中有著很重要的地...

    Yangyang 評論0 收藏0
  • Java面試題:穩定和不穩定排序算法之間的區別-MergeSort與QuickSort

    摘要:穩定與不穩定算法示例以下圖片解釋了穩定和不穩定的排序是如何工作的這就是穩定和不穩定排序算法之間的區別。穩定排序算法的一些常見示例是合并排序,插入排序和冒泡排序。 showImg(https://segmentfault.com/img/remote/1460000018913243); 來源 | 愿碼(ChainDesk.CN)內容編輯 愿碼Slogan | 連接每個程序員的故事 網...

    wanghui 評論0 收藏0
  • 算法學習之路,排序快速排序Java實現)

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

    charles_paul 評論0 收藏0
  • 七大排序算法總結(java)

    摘要:前面介紹了七大算法的思想與實現步驟,下面來做一個歸總。直到無序區中的數為零,結束排序。步驟以從小到大為例,排序數組大小為。比較完以后則排序結束。堆排序思想堆排序是采用樹的形式的數據結構來進行排序的,其中每一個堆都是完全二叉樹。 前面介紹了七大算法的思想與實現步驟,下面來做一個歸總。 排序方法 平均復雜度 最壞復雜度 最好復雜度 輔助空間 穩定性 直接選擇排序 O(n^2...

    cartoon 評論0 收藏0

發表評論

0條評論

khlbat

|高級講師

TA的文章

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