這是最近看到的一個挺屌的演算法,應該說屌是屌在這個寫法,這個演算法很早就知道了,只是這個寫法真的不錯,分享一下。
//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;
}
平常大家都是左邊右邊找來放pivot,這個只用一個這樣找挺屌的,優(yōu)點是大家都看不太懂,不知道在幹嘛,感覺很猛,缺點是有時候自己也看不懂。 ...
題外話,這個寫法應該是會快一點的。
//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,看看效果。
然後這裡有網(wǎng)址版:code
現(xiàn)在用這個寫code是不是感覺比較潮一點。 XDD