Hyluss

Sortowanie szybkie_poprawa

Apr 12th, 2016
498
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.58 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. int LICZNIK=0;
  12.  
  13. void szybkiesortowanie (int* tab, int ile)
  14. {
  15.     int pivot;
  16.     int gdziepivot;
  17.  
  18.     LICZNIK++;
  19.  
  20.     gdziepivot =  (ile) / 2 ;
  21.  
  22.     int p=ile-1;
  23.     int l=0;
  24.     int pamietaj;
  25.  
  26.     pivot = tab[gdziepivot];
  27.  
  28.     while (1)
  29.     {
  30.  
  31.         while  ( tab[l] < pivot )
  32.         {
  33.             l++;
  34.         }
  35.  
  36.         while  ( tab[p] > pivot )  
  37.         {
  38.             p--;       
  39.         }
  40.  
  41.         if (l <= p)
  42.         {
  43.             pamietaj = tab[p];
  44.             tab[p] = tab[l];
  45.             tab[l] = pamietaj;
  46.             l++;
  47.             p--;
  48.         }
  49.         else
  50.         {
  51.             break;
  52.         }
  53.  
  54.     }
  55.     if (p > 0)
  56.     {
  57.         szybkiesortowanie (tab, p+1);
  58.     }
  59.     if (l < ile-1)
  60.     {
  61.         szybkiesortowanie ((int *)&tab[l], ile-l);     
  62.     }
  63.  
  64.     LICZNIK--;
  65. }
  66.  
  67.  
  68. int _tmain(int argc, _TCHAR* argv[])
  69. {
  70.     int ile;
  71.     int* tablica;
  72.  
  73.     srand (time(NULL));
  74.  
  75.     printf ("ile liczb?\n");
  76.     scanf ("%d",&ile);
  77.  
  78.     tablica = (int*) malloc (sizeof (int) * ile);
  79.     while (1)
  80.     {
  81.         puts("liczby\n");
  82.         for (int i=0; i<ile;i++)
  83.         {
  84.             tablica[i] = (rand() % 200) - 100;
  85.         }
  86.  
  87. /*
  88. tablica[0] = 17;
  89. tablica[1] = 58;
  90. tablica[2] = 4;
  91. tablica[3] = 37;
  92. tablica[4] = 3;
  93. tablica[5] = 87;
  94. tablica[6] = 70;
  95. tablica[7] = 5;
  96. tablica[8] = 68;
  97. tablica[9] = 97;
  98. */
  99.  
  100.         for (int i=0; i<ile;i++)
  101.         {
  102.             printf ("tab[%d] = %d\n",i,tablica[i]);
  103.         }
  104.  
  105.         puts ("\n");
  106.         szybkiesortowanie ( tablica, ile);
  107.         puts("posortowane\n");
  108.         for (int i=0; i<ile;i++)
  109.         {
  110.             printf ("tab[%d] = %d\n",i,tablica[i]);
  111.         }
  112.         puts ("\n");
  113.  
  114.         _getch();
  115.     }
  116.     return 0;
  117. }
Advertisement
Comments
  • User was banned
Add Comment
Please, Sign In to add comment