z

Khử đề quy Quick Sort

Quick Sort
Quick Sort
#include <stdio.h>
#include "queue_stack.h"
void hoanvi(int &a,int &b);
void quickSort(Kieumoi A[],int n);
void main()
{
int A[]={0,1,6,6,3,1,1,9,9,4,6};
quickSort(A,11);
for(int i=0;i<11;i++)
printf("%d ",A[i]);
}
void quickSort(Kieumoi A[],int n)
{
Stack S1,S2;
InitStack(S1);
InitStack(S2);
Push(S1,0);
Push(S2,n-1);
int L,R,x,i,j;
do{
L=Pop2(S1);
R=Pop2(S2);
do{
i=L;
j=R;
x=A[(L+R)/2];
do{
while(A[i]<x) i++;
while(A[j]>x) j--;
if(i<=j)
{
hoanvi(A[i],A[j]);
i++;
j--;
}
} while (i<=j);
if(i<R)
{
Push(S1,i);
Push(S2,R);
}
R=j;
} while(L<R);

}while(!IsEmptyStack(S1) && !IsEmptyStack(S2));

}
void hoanvi(int &a,int &b)
{
int temp=a;
a=b;
b=temp;
}


Previous
Next Post »