Quick Sort
Quick Sorts
Tư tưởng :
Chia để trị và đệ quy
- Cho dãy số ban đầu gồm n phần tử X1,X2,...,Xn chưa được sắp thứ tự .
- Chọn một phần tử Xi tùy ý trong dãy làm chốt .
khi đó dãy S cần xếp được chia thành 3 dãy con
S1= { X/X<chốt }
S2= { X/X=chốt }
S3= { X/X>chốt }
à Như vậy dãy S2 đã được xếp
Tiếp tục xếp hai dãy S1 và S3 theo phương pháp như trên
Thủ tục :
void QuickSort(int X[50],int l,int r)
{
int t=(l+r)/2,tg;
int i=l,j=r;
int chot=X[t];
do
{
while(X[i]<chot) i=i+1;
while(X[j]>chot) j=j-1;
if(i<=j)
{
tg=X[i];
X[i]=X[j];
X[j]=tg;
i++;
j--;
}
} while(i<j);
if(i<r)QuickSort(X,i,r);
if(l<j)QuickSort(X,l,j);
}
Độ phức tạp của thuật toán :
Trung bình : O(nlog2n)
Xấu nhất :O(n2)
Bạn đang đọc truyện trên: Truyen247.Pro