Hyluss

Sortowanie szybkie

Apr 12th, 2016
561
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.90 KB | None | 0 0
  1. // sortowanieszybkie.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <conio.h>
  6. #include <malloc.h>
  7. #include <ctime>
  8. #include <cstdlib>
  9.  
  10.  
  11.  
  12.  
  13. void szybkiesortowanie (int* tab, int ile)
  14. {
  15. int pivot;
  16. int gdziepivot;
  17. int LICZNIK=0; 
  18. LICZNIK++;
  19.  
  20. gdziepivot =  (ile) / 2 ;
  21.     //  printf ("[%d] - %d",pivot, tab[pivot]);
  22.  
  23. int p=ile-1;
  24. int l=0;
  25. int pamietaj;
  26.  
  27.  
  28.  
  29. puts ("\n\n\n");
  30.  
  31. pivot = tab[gdziepivot];
  32.  
  33. while (1)
  34. {
  35.  
  36.     while ( ( tab[l] < pivot )  )
  37.     {
  38.         //printf ("tab[%d] -",l);
  39.         //printf ("%d\n",tab[l]);
  40.         l++;
  41.     }
  42.  
  43.     while ( ( tab[p] > pivot )  )
  44.     {
  45.     //  printf ("tab[%d] -",p);
  46.     //  printf ("%d\n",tab[p]);
  47.         p--;       
  48.     }
  49.  
  50.     if (l < p)
  51.     {
  52.         pamietaj = tab[p];
  53.         tab[p] = tab[l];
  54.         tab[l] = pamietaj;
  55.  
  56.         if (l==gdziepivot)
  57.         {  
  58.             gdziepivot = p;
  59.         }
  60.         else
  61.         {
  62.             if (p==gdziepivot)
  63.             {
  64.                 gdziepivot=l;
  65.             }
  66.         }
  67.          l++; //
  68.          p--; //?
  69.     }
  70.     if (l>=p)
  71.     {
  72.     break;
  73.     }
  74.  
  75. }
  76.  
  77.  
  78.     if ( (gdziepivot>0) && (ile!=1 ))
  79.     {
  80.         szybkiesortowanie (tab, gdziepivot);
  81.     }
  82.     if ( (gdziepivot<ile-1) && (ile!=1 ))
  83.     {
  84.         szybkiesortowanie ((int *)&tab[gdziepivot+1], ile-1-gdziepivot);       
  85.     }
  86.  
  87.  
  88. for (int i=0; i<ile;i++)
  89.     {
  90.         printf ("tab[%d] = %d\n",i,tab[i]);
  91.     }
  92. puts ("\n");
  93.  
  94.    
  95.     //break;
  96. LICZNIK--;
  97. }
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107. int _tmain(int argc, _TCHAR* argv[])
  108. {
  109. int ile;
  110. int* tablica;
  111. int LICZNIK;
  112.  
  113.  
  114. srand (time(NULL));
  115. /*
  116. printf ("ile liczb?\n");
  117. scanf ("%d",&ile);
  118. */
  119.  
  120.     ile = 8;
  121.  
  122.     tablica = (int*) malloc (sizeof (int) * ile);
  123. /*  for (int i=0; i<ile;i++)
  124.     {
  125.         tab[i] = rand() %100;
  126.     }
  127. */
  128. tablica[0] = 5;
  129. tablica[1] = 3;
  130. tablica[2] = 0;
  131. tablica[3] = 2;
  132. tablica[4] = 4;
  133. tablica[5] = 1;
  134. tablica[6] = 7;
  135. tablica[7] = 3;
  136.  
  137.     for (int i=0; i<ile;i++)
  138.     {
  139.         printf ("tab[%d] = %d\n",i,tablica[i]);
  140.     }
  141.  
  142.  
  143. szybkiesortowanie ( tablica, ile);
  144.    
  145. puts ("\n");
  146.  
  147. /////////////////////  
  148.    
  149.  
  150.     _getch();
  151.     return 0;
  152. }
Advertisement
Comments
  • User was banned
Add Comment
Please, Sign In to add comment