Advertisement
ioana_martin98

Untitled

Apr 9th, 2022
620
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.93 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.  
  8. //INTERSCHIMBARE DIRECTA
  9.   /*n = 5
  10.     v : 7 2 5 8 6
  11.     i : 1 2 3 4 5
  12.     */
  13.     for(i=1; i<=n-1; i++)
  14.         //cauta la dreapta elementului curent
  15.         for(j=i+1; j<=n; j++)
  16.         {
  17.             // i=1 7>2 X ; 2>5;  2>8; 2>6
  18.             // i=2 7>5 X; 5>8; 5>6
  19.             // i=3 7>8; 7>6 X
  20.             // i=4 8>7 X
  21.             if(v[i]>v[j])
  22.             {
  23.                 //interschimbare
  24.                 aux = v[i];
  25.                 v[i]= v[j];
  26.                 v[j]= aux;
  27.                 // 1 2 3 4 5 = i
  28.                 // 2 7 5 8 6
  29.                 // 2 5 7 8 6
  30.                 // 2 5 6 8 7
  31.                 // 2 5 6 7 8
  32.             }
  33.         }
  34. //METODA BULELOR (BUBBLE SORT)
  35.     /*n = 5
  36.     v : 7 2 5 8 6
  37.     i : 1 2 3 4 5
  38.     */
  39.     do
  40.     {
  41.         ok = 1; //presupun ca vectorul este sortat
  42.         for(i=1; i<=n-1; i++)
  43.         {
  44.             // i=1 7>2 X
  45.             // i=2 7>5 X
  46.             // i=3 7>8
  47.             // i=4 8>6 X
  48.             // i=1 2>5
  49.             // i=2 5>7
  50.             // i=3 7>6 X
  51.             // i=4 7>8
  52.             if(v[i]>v[i+1])
  53.             {
  54.                 //interschimbare
  55.                 aux = v[i];
  56.                 v[i]= v[i+1];
  57.                 v[i+1]= aux;
  58.                 ok=0;
  59.                 // 1 2 3 4 5
  60.                 // 2 7 5 8 6
  61.                 // 2 5 7 8 6
  62.                 // 2 5 7 6 8
  63.                 //se reia do while fiindca am ajuns la i=5 si ok==0
  64.                 // 2 5 6 7 8
  65.             }
  66.         }
  67.     }
  68.     while(ok==0);
  69.  
  70. //SORTARE SELECTIE MIN
  71.     /*n = 5
  72.     v : 7 2 5 8 6
  73.     i : 1 2 3 4 5
  74.     */
  75.     for(i=1; i<=n-1; i++)
  76.     {
  77.         //initializam minimul cu valoarea curenta
  78.         minim = v[i];
  79.         poz_min = i;
  80.         //cautam la dreapta un alt minim
  81.         for(j=i+1; i<=n; j++)
  82.         {
  83.             // i=1 : minim=7, poz=1
  84.             //       2<7 X minim = 2 poz =2
  85.             //       5<2 8<2 6<2
  86.             //facem interschimbarea
  87.             // i=2 : minim=7, poz=2
  88.             //       5<7 X minim = 5 poz=3
  89.             //       8<5 6<5
  90.             //facem interschimbarea
  91.             // i=3 : minim=7, poz=3
  92.             //      8<7 6<7X minim=6 poz=5
  93.             //facem intersch
  94.             // i=4 : minim = 8 poz=4
  95.             //      7<8X minim=7 poz=5
  96.             //facem intersc
  97.             if(v[j]<minim)
  98.             {
  99.                 minim=v[j];
  100.                 poz_min=j;
  101.  
  102.             }
  103.         }
  104.         //interschimbam elementul curent cu minimul din dreapta lui
  105.         aux = v[i];
  106.         v[i]= v[poz_min];
  107.         v[poz_min]= aux;
  108.         // 1 2 3 4 5
  109.         // 2 7 5 8 6
  110.         // 2 5 7 8 6
  111.         // 2 5 6 8 7
  112.         // 2 5 6 7 8
  113.     }
  114.  
  115. //SORTARE SELECTIE MAX
  116.    /*n = 5
  117.     v : 7 2 5 8 6
  118.     i : 1 2 3 4 5
  119.     */
  120.     //parcurg vectorul de la final la inceput
  121.     for(i=n; i>=2; i--)
  122.     {
  123.         maxim=v[i];
  124.         poz_max = i;
  125.         //caut in stanga
  126.         for(j=i-1; j>=1; j--)
  127.         {
  128.             // i=5 : maxim=6 poz=5
  129.             //      8>6 X maxim=8 poz=4
  130.             //      5>8 2>8 7>8
  131.             //facem intersch
  132.             // i=4 : maxim=6 poz=4
  133.             //      5>6 2>6 7>6 X maxim=7 poz=1
  134.             //facem intersch
  135.             // i=3 : maxim=5 poz=3
  136.             //      2>5 6>5 X maxim=6 poz=1
  137.             //facem intersch
  138.             // i=2 : maxim=2 poz=2
  139.             //      5>2 X maxim=5 poz=1
  140.             //facem intersch
  141.             //memorez cea mai mare valoare de la stanga elementului curent
  142.             if(v[j]>maxim)
  143.             {
  144.                 maxim=v[j];
  145.                 poz_max = j;
  146.             }
  147.         }
  148.         //interschimbare maxim cu element curent
  149.         aux = v[i];
  150.         v[i]= v[poz_max];
  151.         v[poz_max]= aux;
  152.         // 1 2 3 4 5
  153.         // 7 2 5 6 8
  154.         // 6 2 5 7 8
  155.         // 5 2 6 7 8
  156.         // 2 5 6 7 8
  157.     }
  158.     return 0;
  159. }
  160.  
  161.  
  162.  
  163.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement