Advertisement
Wigoo

PAD Praktikum 4

Nov 23rd, 2014
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.70 KB | None | 0 0
  1. void aufgabe_11() {
  2.     const int n = 500000; // Anzahl der Zahlen im Array, muss statisch im Code festgelegt werden
  3.     int A[n];
  4.  
  5.     for (int i = 0; i < n; i++) {
  6.         A[i] = rand();
  7.     }
  8.     time_t timetmp = time(NULL);
  9.  
  10.     for (int i = 0; i < n; i++) {
  11.         for (int j = n - 1; j >= i; j--) {
  12.             if (A[j - 1] > A[j]) {
  13.                 int tmp = A[j - 1];
  14.                 A[j] = A[j];
  15.                 A[j] = tmp;
  16.             }
  17.         }
  18.         cout << "Fortschritt für " << n << " Zahlen: " << int(i * 100.0 / n) << " %\r";
  19.     }
  20.  
  21.     cout << endl << "Zeit für " << n << " Zahlen: " << time(NULL) - timetmp << " Sekunden";
  22. }
  23.  
  24. void aufgabe_12() {
  25.     const int n = 500000; // Anzahl der Zahlen im Array, muss statisch im Code festgelegt werden
  26.     int A[n];
  27.  
  28.     for (int i = 0; i < n; i++) {
  29.         A[i] = rand();
  30.     }
  31.     time_t timetmp = time(NULL);
  32.  
  33.     for (int i = 0; i < n - 1; i++) {
  34.         int tmp_cnt = i;
  35.         for (int j = i + 1; j < n; j++)
  36.             if (A[j] < A[tmp_cnt])
  37.                 tmp_cnt = j;
  38.         if (tmp_cnt != i) {
  39.             int tmp_val = A[tmp_cnt];
  40.             for (int j = tmp_cnt; j > i; j--)
  41.                 A[j] = A[j - 1];
  42.             A[i] = tmp_val;
  43.         }
  44.         cout << "Fortschritt für " << n << " Zahlen: " << int(i * 100.0 / n) << " %\r";
  45.     }
  46.  
  47.     cout << endl << "Zeit für " << n << " Zahlen: " << time(NULL) - timetmp << " Sekunden";
  48. }
  49.  
  50. void aufgabe_13() {
  51.     const int n = 200000; // Anzahl der Zahlen im Array, muss statisch im Code festgelegt werden
  52.    
  53.     // Je nachdem ob man Vector oder Array für die Aufgabe verwendet das andere auskommentieren
  54.    
  55.     ///*
  56.     vector<int> A(0);
  57.     for (int i = 0; i < n; i++)
  58.         A.push_back(rand());
  59.     //*/
  60.    
  61.     /*
  62.     int A[n];
  63.     for (int i = 0; i < n; i++)
  64.         A[i] = rand();
  65.     */
  66.  
  67.  
  68.     time_t timetmp = time(NULL);
  69.  
  70.     for (int i = 1; i < n; i++) {
  71.         int tmp = A[i], ins = -1, left = 0, right = i;
  72.         while (true) {
  73.             if (left == right) {
  74.                 ins = left;
  75.                 break;
  76.             }
  77.             int mid = left + ((right - left) / 2);
  78.             if (tmp > A[mid]) {
  79.                 left = mid + 1;
  80.                 continue;
  81.             }
  82.             if (tmp < A[mid]) {
  83.                 right = mid;
  84.                 continue;
  85.             }
  86.             ins = mid;
  87.             break;
  88.         }
  89.         for (int j = i - 1; j >= ins; j--)
  90.             A[j + 1] = A[j];
  91.         A[ins] = tmp;
  92.         cout << "Fortschritt für " << n << " Zahlen: " << int(i * 100.0 / n) << " %\r";
  93.     }
  94.  
  95.     cout << endl << "Zeit für " << n << " Zahlen: " << time(NULL) - timetmp << " Sekunden";
  96.  
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement