SHARE
TWEET

Untitled

a guest May 23rd, 2019 70 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5.  
  6. void bubblesort(int tab[], int n)                //funkcja sortowania b¹belkowego zbudowana iteracyjnie
  7. {
  8.     int i,j;
  9.     for(i=1;i<n;i++){
  10.         for(j=n-1;j>=1;j--){
  11.             if(tab[j]<tab[j-1]){
  12.                 int swap;
  13.                 swap=tab[j-1];
  14.                 tab[j-1]=tab[j];
  15.                 tab[j]=swap;
  16.             }
  17.         }
  18.     }
  19. }
  20.  
  21. void swap(int *first, int *second)
  22. {
  23.     int temporary = *first;
  24.     *first = *second;
  25.     *second = temporary;
  26. }
  27.  
  28. int partition(int array[], int low, int high)
  29. {
  30.     int pivot = array[low];
  31.     int i = low-1, j = high+1;
  32.  
  33.     while(i<j) {
  34.         while(array[--j]>pivot)
  35.             ;
  36.         while(array[++i]<pivot)
  37.             ;
  38.         if(i<j)
  39.             swap(&array[i],&array[j]);
  40.     }
  41.     return j;
  42. }
  43.  
  44. void quicksort(int array[], int low, int high)
  45. {
  46.     if(low<high) {
  47.         int partition_index = partition(array,low,high);
  48.         quicksort(array, low, partition_index);
  49.         quicksort(array, partition_index+1, high);
  50.     }
  51. }
  52.  
  53. void fill(int tab[], int n)             //funkcja która uzupe³nia tablicê losowymi liczbami z zakresu -10 do 10
  54. {
  55.     srand(time(NULL));
  56.     int i;
  57.     for(i=0;i<n;i++){
  58.         tab[i]=(rand()%21)-10;
  59.     }
  60. }
  61.  
  62. void fill_zakres(int tab[], int n)
  63. {
  64.     srand(time(NULL));
  65.     int i;
  66.  
  67.     int a,b,y,z;
  68.     printf("Podaj zakres losowania liczb:\n");
  69.     printf("Od: ");
  70.     scanf("%d", &a);
  71.     printf("Do: ");
  72.     scanf("%d", &b);
  73.     printf("Zakres %d %d\n", a,b);
  74.     y=a;
  75.     z=b;
  76.     if(a<0){
  77.         y=a*(-1);
  78.     }
  79.     if(b<0){
  80.         z=b*(-1);
  81.     }
  82.     printf("y: %d z: %d\n", y,z);
  83.  
  84.     int x;
  85.     x=y+z+1;
  86.     printf("x: %d", x);
  87.  
  88.     for(i=0;i<n;i++){
  89.         tab[i]=(rand()%x)+a;
  90.     }
  91.     system("cls");
  92.     printf("Zakres %d %d\n", a,b);
  93.  
  94. }
  95.  
  96. void print_tab(int tab[],int n)         //funkcja wypisujuj¹ca zawartoœæ tablicy
  97. {
  98.     int i;
  99.     for(i=0;i<n;i++){
  100.         printf("%d ",tab[i]);
  101.     }
  102. }
  103.  
  104. int main()
  105. {
  106.     clock_t start,stop;
  107.     double czas;
  108.     int numer;
  109.  
  110.     while(1){
  111.         system("cls");
  112.         printf("Co chcesz zrobic: \n");
  113.  
  114.         printf("1.Mierzenie czasu sortowania babelkowego dla n elemenow\n");
  115.         printf("2.Wyswietlenie tablicy przed i po sortowaniu babelkowym dla n elementow\n");
  116.         printf("3.Mierzenie czasu sortowania quicksort dla n elemenow\n");
  117.         printf("4.Wyswietlenie tablicy przed i po sortowaniu quciksort dla n elementow\n");
  118.         printf("5.Zakoncz dzialanie programu \n");
  119.         scanf("%d", &numer);
  120.  
  121.         if(numer==1){
  122.             system("cls");
  123.  
  124.             int n;
  125.             printf("Ile liczb wylosowac: ");
  126.             scanf("%d", &n);                                                                    //pobranie od u¿ytkownika iloœci losowanych liczb
  127.  
  128.             int tab[n];
  129.             fill_zakres(tab,n);                                                                       //uzupe³nienie tablicy
  130.  
  131.             start = clock();
  132.             bubblesort(tab,n);
  133.             stop = clock();
  134.             czas = (double)(stop-start)/CLOCKS_PER_SEC;                                        //wywo³anie funkcji sortuj¹cej tablice
  135.             printf("Posortowanie metoda babelkowa %d liczb zajmie: %lf s\n",n,czas);
  136.             puts("");
  137.             system("pause");
  138.         }
  139.         else if(numer==2){
  140.             system("cls");
  141.             int n;
  142.             printf("Ile liczb wylosowac: ");
  143.             scanf("%d", &n);                        //pobranie od u¿ytkownika iloœci losowanych liczb
  144.  
  145.             int tab[n];
  146.             fill_zakres(tab,n);                             //uzupe³nienie tablicy
  147.             puts("\nPrzed sortowaniem :");
  148.             print_tab(tab,n);                     //wypisanie przed wywo³aniem funkcji do sortowania
  149.             puts("");
  150.             puts("Po sortowaniu: ");
  151.             bubblesort(tab,n);                       //wywo³anie funkcji sortuj¹cej tablice
  152.             print_tab(tab,n);                     //ponowne wypisanie tablicy
  153.             puts("");
  154.             system("pause");
  155.         }
  156.  
  157.          else if(numer==3){
  158.             system("cls");
  159.  
  160.             int n;
  161.             printf("Ile liczb wylosowac: ");
  162.             scanf("%d", &n);                                                                    //pobranie od u¿ytkownika iloœci losowanych liczb
  163.  
  164.             int tab[n];
  165.             fill_zakres(tab,n);                                                                       //uzupe³nienie tablicy
  166.  
  167.             start = clock();
  168.             quicksort(tab,0,n-1);
  169.             stop = clock();
  170.             czas = (double)(stop-start)/CLOCKS_PER_SEC;                                        //wywo³anie funkcji sortuj¹cej tablice
  171.             printf("Posortowanie metoda quicksort %d liczb zajmie: %lf s\n",n,czas);
  172.             puts("");
  173.             system("pause");
  174.          }
  175.  
  176.          else if(numer==4){
  177.             system("cls");
  178.             int n;
  179.             printf("Ile liczb wylosowac: ");
  180.             scanf("%d", &n);                        //pobranie od u¿ytkownika iloœci losowanych liczb
  181.  
  182.             int tab[n];
  183.             fill_zakres(tab,n);                             //uzupe³nienie tablicy
  184.             puts("\nPrzed sortowaniem :");
  185.             print_tab(tab,n);                     //wypisanie przed wywo³aniem funkcji do sortowania
  186.             puts("");
  187.             puts("Po sortowaniu: ");
  188.             quicksort(tab,0,n-1);                      //wywo³anie funkcji sortuj¹cej tablice
  189.             print_tab(tab,n);                     //ponowne wypisanie tablicy
  190.             puts("");
  191.             system("pause");
  192.         }
  193.  
  194.  
  195.         else if(numer == 5){
  196.             system("cls");
  197.             printf("Zakonczono dzialanie.");
  198.             return 0;
  199.         }
  200.         else{
  201.             system("cls");
  202.             puts("Blad! Podaj odpowiednia wartosc.");
  203.             system("pause");
  204.         }
  205.     }
  206. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top