切換
舊版
前往
大廳
主題

【C++】quicksort()

鍋貼企鵝 | 2013-10-21 17:03:45 | 巴幣 6 | 人氣 6851

  這是最近看到的一個挺屌的演算法,應該說屌是屌在這個寫法,這個演算法很早就知道了,只是這個寫法真的不錯,分享一下。

  平常大家都是左邊右邊找來放pivot,這個只用一個這樣找挺屌的,優點是大家都看不太懂,不知道在幹嘛,感覺很猛,缺點是有時候自己也看不懂。  ...

  題外話,這個寫法應該是會快一點的。

//quciksort

#include<iostream>
#include<cstdlib>

using namespace std;

int partition(int A[],int l,int u);
void quicksort(int A[],int a,int b);

int main()
{
        int A[10]={5,4,9,6,7,2,4,3,5,1};
        quicksort(A,0,9);
        for(int i=0;i<10;i++)
                cout<<A[i];
        cout <<endl;
        system("pause");
        return 0;
}

void quicksort(int A[],int a,int b)
{
        if(a<b)
        {
                int q;
                q = partition(A,a,b);
                quicksort(A,a,q-1);
                quicksort(A,q+1,b);
        }
}

int partition(int A[],int l,int u)
{
        int i;
        i = l-1;
        for(int j=l;j<u;j++)
        {
                if(A[j]<A[u])
                {
                        i++;
                        swap(A[i],A[j]);
                }
        }
        i++;
        swap(A[i],A[u]);
        return i;
}


話說這次嘗試用其他方法貼code,看看效果。

然後這裡有網址版:code




  現在用這個寫code是不是感覺比較潮一點。  XDD


創作回應

RyuZU
最近剛好學到這...根本看不懂ㄚ!!
2014-04-11 15:59:00
Yirga 耶加
Sublime好東西~雖然我還是喜歡用vim直接硬幹XDD
2015-11-24 15:27:58
鍋貼企鵝
我現在都交替用,如果只是要改小地方,就直接 vim 之後可以馬上在終端機下 git。
2015-11-24 17:03:27
耍廢
大大我看不懂這個程式的執行方式
尤其是那兩個function以及main裏頭quicksort(A,0,9)這樣打的意思是甚麼
大大有辦法能解釋詳細給C++新手的我看嗎?還是大大有哪個網站有解釋這個程式?
2015-12-22 23:27:46
鍋貼企鵝
quicksort(A,0,9) 就是呼叫下面的副函式唷,或許看不懂是不懂為什麼這樣做可以排序吧?如果是這樣可能可以查查 wiki關於快速排序的方法等。
2015-12-23 00:17:10
耍廢
好的大大,明天我研究看看後有不懂得再請教你
2015-12-23 00:52:43

更多創作