Алгоритмы и структуры данных на С++. Аксёнова Е.А - 65 стр.

UptoLike

5.4. Реализация быстрой сортировки 65
inline void push2(stack<int> &s, int A, int B)
{
s.push(B);
s.push(A);
}
template<class item>void quicksort(item *a,int l,int r)
{
stack<int> s(50);
push2(s,l,r);
while(!s.empty())
{
l=s.pop();
r=s.pop();
if(r<=l)
continue;
int i=partition(a,l,r);
if(i-1>r-i)
{
push2(s,l,i-1);
push2(s,i+1,r);
}
else
{
push2 (s, i+1, r);
push2 (s, l, i-1);
}
}
}
template<class item>int partition(item*a,int l,int r)
{
int i=l-1, j=r;
item v=a[r],c;
5.4.       Реализация быстрой сортировки                  65


inline void push2(stack &s, int A, int B)
{
   s.push(B);
   s.push(A);
}

templatevoid quicksort(item *a,int l,int r)
{
  stack s(50);
  push2(s,l,r);

  while(!s.empty())
   {
     l=s.pop();
     r=s.pop();

           if(r<=l)
                  continue;

           int i=partition(a,l,r);

           if(i-1>r-i)
           {
              push2(s,l,i-1);
              push2(s,i+1,r);
           }

           else
           {
              push2 (s, i+1, r);
              push2 (s, l, i-1);
           }
       }
 }

templateint partition(item*a,int l,int r)
{
   int i=l-1, j=r;
   item v=a[r],c;