Advertisement
thebys

working matrix bubble sort

Nov 30th, 2014
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.86 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. //Koktejlove razeni matice matice
  4. //Neni to zatim dodelane uplne podle zadani ale už to aspon (neefektivne) funguje.
  5. int main()
  6. {
  7.     //deklarace promennych
  8.     int pocetRadku = 7;
  9.     int pocetSloupcu = 13;
  10.     int zpracovatCisel = pocetRadku * pocetSloupcu; //pouzijeme abychom vedeli kam az probublavat...
  11.  
  12.     int matice[pocetRadku][pocetSloupcu];
  13.     srand(time(NULL));
  14.  
  15.     int pocetIteraci = 0;
  16.     int serazeno = 0;
  17.  
  18.     //naplnìní matice a jeji vypis
  19.     for(int i = 0; i < pocetRadku; ++i)
  20.     {
  21.         for(int j = 0; j < pocetSloupcu; ++j)
  22.         {
  23.             matice[i][j] = rand() % 100;
  24.             printf("%02i ", matice[i][j]);
  25.         }
  26.         printf("\n");
  27.     }
  28.  
  29.     //serazeni matice
  30.     while(serazeno == 0)
  31.     {
  32.         int nastaloPrehozeni = 0;
  33.         for(int k = 0; k < pocetRadku; ++k)
  34.         {
  35.             for(int l = 0; l < pocetSloupcu; ++l)
  36.             {
  37.                 printf("sort P:%02i:%02i - V: %02i, R: %i\n", k, l, matice[k][l], zpracovatCisel);
  38.  
  39.                 if(l < pocetSloupcu-1) //stejny radek
  40.                 {
  41.                     if((matice[k][l]) > matice[k][l+1])
  42.                     {
  43.                         int temp = matice[k][l];
  44.                         matice[k][l] = matice[k][l+1];
  45.                         matice[k][l+1] = temp;
  46.                         nastaloPrehozeni = 1;
  47.                     }
  48.                 }
  49.                 if(k < pocetRadku-1 && l == pocetSloupcu -1) //posledni polozka neposledniho radku
  50.                 {
  51.                     if((matice[k][l]) > matice[k+1][0]) //posledni polozka aktualniho radku s prvni polozkou nasledujiciho
  52.                     {
  53.                         int temp = matice[k][l];
  54.                         matice[k][l] = matice[k+1][0];
  55.                         matice[k+1][0] = temp;
  56.                         nastaloPrehozeni = 1;
  57.                     }
  58.                 }
  59.                 if(k == pocetRadku-1 && l == pocetSloupcu-1)
  60.                 {
  61.                     //posledni polozka iterace
  62.                     //break;
  63.                 }
  64.  
  65.                 if( matice[k][l] > 100) //nekde to preteklo a tohle se da pouzit na zjisteni daneho mista
  66.                 {
  67.                     printf("val err P:%02i:%02i - V: %02i\n", k, l, matice[k][l]);
  68.                 }
  69.             }
  70.         }
  71.  
  72.         if(nastaloPrehozeni == 1)
  73.         {
  74.             --zpracovatCisel;
  75.             ++pocetIteraci;
  76.             continue;
  77.  
  78.         }
  79.         else
  80.         {
  81.             serazeno = 1;
  82.         }
  83.     }
  84.  
  85.     //vypis serazene matice
  86.     printf("\n\nserazeno v %i iteracich:\n", pocetIteraci);
  87.     for(int i = 0; i < pocetRadku; ++i)
  88.     {
  89.         for(int j = 0; j < pocetSloupcu; ++j)
  90.         {
  91.             printf("%02i ", matice[i][j]);
  92.         }
  93.         printf("\n");
  94.     }
  95.  
  96.  
  97.     return 0;
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement