Advertisement
Guest User

Untitled

a guest
Jun 3rd, 2015
249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.02 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <vector>
  4. #include <random>       // random funktion
  5. #include <algorithm>    // random funktion
  6. #include <functional>   // bind header
  7. #include <chrono>       // zeit
  8.  
  9. using namespace std;
  10.  
  11. void controllVector(vector<int>& vV){
  12.     for(int i = 0; i < vV.size()-1 ; i++){
  13.         if(vV[i] > vV[(i+1)]){
  14.             cout << "Fehler" << endl;
  15.             break;
  16.         }
  17.     }
  18. }
  19.  
  20. void displayVector(vector<int>& v) {            //zeigt den Vector an der Indexstelle "i" an
  21.     for (int i = 0; i < v.size(); ++i)
  22.         cout << v[i] << " ";
  23. }
  24.  
  25. template<typename T>                            //custom template für T
  26.  
  27. void swap_if(T& a, T& b) {                      //prüft ob b kleiner a ist und vertauscht bei true deren position
  28.     if (b < a) swap(a, b);
  29. }
  30.  
  31. void selSort(vector<int>& vV, int ui, int oi) { //SelectionSort Function aus der Folie
  32.     int min{0};
  33.     for (int i{ui}; i<oi; ++i) {
  34.     min = i;
  35.     for (int j{i + 1}; j <= oi; ++j)
  36.     if (vV.at(j) < vV.at(min)) min = j;
  37.     swap(vV.at(i), vV.at(min));
  38.      }
  39. }
  40.  
  41. void insSort_v0(vector<int>& vV, int ui, int oi) { //insSort_v0 aus der Folie
  42.     for (int i{ui + 1}; i <= oi; ++i)
  43.     for (int j{i}; j>ui; --j)
  44.             swap_if(vV.at(j - 1), vV.at(j));
  45. }
  46.  
  47.  
  48. void insSort_v2(vector<int>& vV, int ui, int oi) { //insSort_v2 aus der Folie
  49.     int i{0};
  50.     int j{0};
  51.     int tmp{0};
  52.     for (i = oi; ui < i; --i) swap_if(vV.at(i - 1), vV.at(i));
  53.     for (i = ui + 2; i <= oi; ++i) {
  54.         tmp = vV.at(i);
  55.         for (j = i; tmp < vV.at(j - 1); --j)
  56.             vV.at(j) = vV.at(j - 1);
  57.         vV.at(j) = tmp;
  58.     }
  59. }
  60.  
  61.  
  62.  
  63.  
  64. int main() {
  65.  
  66.     vector<int> container{};
  67.  
  68.     using chrono::high_resolution_clock;            //Zeitmess funktion aus der Folie
  69.     using chrono::milliseconds;
  70.     using chrono::duration_cast;
  71.     high_resolution_clock::time_point my_end{};
  72.     high_resolution_clock::time_point my_start{
  73.         high_resolution_clock::now()
  74.     };
  75.  
  76.     auto ri = bind(uniform_int_distribution<int>{0, 100},   //random number generator
  77.     default_random_engine{});
  78.  
  79.     for (int i = 0; i < 1000; ++i)                          //erweitert den Vector um den Wert "ri"
  80.         container.push_back(ri());
  81.  
  82.     displayVector(container);                               //ruft die displayVector Funktion auf
  83.  
  84.     cout << endl << endl;
  85.  
  86.    
  87.    
  88.     //selSort(container, 0, container.size() - 1);          //verschiedene Sortier Algorithmen
  89.     //insSort_v0(container, 0, container.size() - 1);       //sortiert hier den vector "container"
  90.     insSort_v2(container, 0, container.size() - 1);
  91.    
  92.     controllVector(container);
  93.    
  94.    
  95.     displayVector(container);
  96.  
  97.     cout << endl << endl;
  98.  
  99.     my_end = high_resolution_clock::now();                      
  100.     milliseconds ms{duration_cast<milliseconds>(my_end - my_start)};
  101.    
  102.    
  103.    
  104.     cout << ms.count() << " Millisekunden" << endl;         //gibt hier dann die Zeitmessung aus
  105.  
  106.     return 0;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement