Advertisement
Guest User

Untitled

a guest
Nov 28th, 2014
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.17 KB | None | 0 0
  1. void recursiveQuickSort2(int v[], int left, int right)
  2. {
  3.     if (right > left)
  4.     {
  5.  
  6.         int p,q,i,less,grt;
  7.         p = v[left];
  8.         q = v[right];
  9.  
  10.         if(p > q)
  11.         {
  12.             g_num_comparacoes++;
  13.             swap(&v[left],&v[right]);
  14.             p = v[left];
  15.             q = v[right];
  16.         }
  17.         else if (p == q)
  18.         {
  19.             while (p == q && left < right)
  20.             {
  21.                 g_num_comparacoes++;
  22.                 left++;
  23.                 p = v[left];
  24.             }
  25.         }
  26.         i = left+1;
  27.         less = left+1;
  28.         grt = right-1;
  29.  
  30.         while(i<=grt)
  31.         {
  32.             if(v[i]<p)
  33.             {
  34.                 swap(&v[i++], &v[less++]);
  35.                 g_num_comparacoes++;
  36.             }
  37.             else if (q < v[i])
  38.             {
  39.                 swap(&v[i], &v[grt--]);
  40.                 g_num_comparacoes++;
  41.             }
  42.             else i++;
  43.         }
  44.  
  45.         swap(&v[left], &v[--less]);
  46.         swap(&v[right], &v[++grt]);
  47.  
  48.         recursiveQuickSort2(v, left, less-1);
  49.         recursiveQuickSort2(v, less+1, grt-1);
  50.         recursiveQuickSort2(v, grt+1, right);
  51.  
  52.     }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement