Advertisement
Dani_info

Metode de sortare

Apr 17th, 2018
148
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. void BubbleSort(int[], int);
  6. void InsertionSort(int[], int);
  7. void SelectionSort(int[], int);
  8. void CountingSort(int[], int);
  9. void Interclasare();
  10.  
  11. int main() {
  12.     int n;
  13.     cout << "Cate elemente are vectorul?"; cin >> n;
  14.     int v[20];
  15.     cout << "Introdu elementele vectorului:" << endl;
  16.     for (int i = 0; i < n; i++)
  17.         cin >> v[i];
  18.     system("pause");
  19.     return 0;
  20.  
  21. }
  22.  
  23. void BubbleSort(int v[], int n) {
  24.     int ok, i = 0;
  25.     do {
  26.         ok = 1;
  27.         for (int j = 0; j < n - i - 1; j++) {
  28.             if (v[j] > v[j + 1]) {
  29.                 swap(v[j], v[j + 1]);
  30.                 ok = 0;
  31.             }
  32.         }
  33.         i++;
  34.     } while (!ok);
  35.     for (int i = 0; i < n; i++)
  36.         cout << v[i] << " ";
  37. }
  38.  
  39. void InsertionSort(int v[], int n) {
  40.     for (int i = 1; i < n; i++) {
  41.         int ind = i - 1;
  42.         int arr = v[i];
  43.         while (ind >= 0 && arr < v[ind]) {
  44.             v[ind + 1] = v[ind];
  45.             ind--;
  46.         }
  47.         v[ind + 1] = arr;
  48.     }
  49.     for (int i = 0; i < n; i++)
  50.         cout << v[i] << " ";
  51. }
  52.  
  53. void SelectionSort(int v[], int n) {
  54.     for (int m = n - 1; m >= 0; m--) {
  55.         int nmax = v[0];
  56.         int ind = 0;
  57.         for (int i = 0; i <= m; i++) {
  58.             if (v[i] > nmax) {
  59.                 nmax = v[i];
  60.                 ind = i;
  61.             }
  62.         }
  63.         swap(v[m], v[ind]);
  64.     }
  65.     for (int i = 0; i < n; i++)
  66.         cout << v[i] << " ";
  67. }
  68.  
  69. void CountingSort(int v[], int n) {
  70.     int c[10], b[10];
  71.     for (int i = 0; i < n; i++)
  72.         b[i] = 0;
  73.     for (int i = 0; i < n - 1; i++) {
  74.         for (int j = i + 1; j < n; j++) {
  75.             if (v[i] > v[j])
  76.                 b[i]++;
  77.             else
  78.                 b[j]++;
  79.         }
  80.     }
  81.     for (int i = 0; i < n; i++)
  82.         c[b[i]] = v[i];
  83.     for (int i = 0; i < n; i++)
  84.         cout << c[i] << " ";
  85. }
  86.  
  87. void Interclasare() {
  88.     int x, y, a[10], b[10], c[20], k = 0;
  89.     cout << "Cate elemente are primul vector??"; cin >> x;
  90.     cout << "Introduceti elemntele primului vector:" << endl;
  91.     for (int i = 0; i < x; i++) cin >> a[i];
  92.     cout << "Cate elemente are cel de-al doilea vector??"; cin >> y;
  93.     cout << "Introdu elemntele celui de-al doilea vector:" << endl;
  94.     for (int i = 0; i < y; i++) cin >> b[i];
  95.     int i = 0, j = 0;
  96.     while (i < x && j < y) {
  97.         if (a[i] > b[j])
  98.             c[k++] = b[j++];
  99.         else
  100.             c[k++] = a[i++];
  101.     }
  102.  
  103.     for (int d = i; d < x; d++)
  104.         c[k++] = a[d];
  105.     for (int e = j; e < y; e++)
  106.         c[k++] = b[e];
  107.     for (i = 0; i < x + y; i++)
  108.         cout << c[i] << " ";
  109. }
Advertisement
RAW Paste Data Copied
Advertisement