daily pastebin goal
55%
SHARE
TWEET

Untitled

kamixor Apr 15th, 2018 6 in 1 day
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <ctime>
  3.  
  4.  
  5. //#define N 50000
  6. int N, temp, indeks_min, min, *array;
  7.  
  8. void dataType(){
  9.     int a;
  10.     std::cout<<"Wybierz dane wejsciowe:\n";
  11.     std::cout<<"1) Pseudo losowe\n";
  12.     std::cout<<"2) Posortowane\n";
  13.     std::cout<<"3) Odwrotnie posortowane\n";
  14.     std::cout<<"(1-3):";
  15.     std::cin>>a;
  16.     switch(a){
  17.         case 1:
  18.         std::cout<<"Podaj ilosc danych: \n";
  19.         std::cin>>N;
  20.         array = new int[N];
  21.         for (int i=1;i<=N;i++) {
  22.             array[i]=rand()%32000;
  23.         }
  24.         break;
  25.         case 2:
  26.         std::cout<<"Podaj ilosc danych: \n";
  27.         std::cin>>N;
  28.         array = new int[N];
  29.         for (int i=1;i<=N;i++) {
  30.             array[i]=i;
  31.         }
  32.         break;
  33.         case 3:
  34.         std::cout<<"Podaj ilosc danych: \n";
  35.         std::cin>>N;
  36.         array = new int[N];
  37.         for (int i=1;i<=N;i++) {
  38.             array[i]=-i;
  39.         }
  40.         break;
  41.         default:
  42.         dataType();
  43.         break;
  44.     }
  45. }
  46.  
  47. void bubblesort(int array[]){
  48.     dataType();
  49.     int start_s = clock();
  50.     for (int i = 0; i < N; ++i) {
  51.             for (int j = 0; j < N-1; ++j){
  52.                 if (array[j]>array[j+1]) {
  53.                 temp=array[j];
  54.                 array[j]=array[j+1];
  55.                 array[j+1]=temp;
  56.                 //std::swap(array[j],array[j+1]);
  57.             }
  58.         }
  59.     }
  60.     int stop_s = clock();
  61.     std::cout << "time: " << (stop_s - start_s) / double(CLOCKS_PER_SEC) << std::endl;
  62.     delete[] array;
  63. }
  64. void bubblesort_flag(int array[]){
  65.     dataType();
  66.     int start_s = clock();
  67.     bool znacznik;
  68.     do {
  69.         znacznik = 0;
  70.         for (int j = 0; j < N - 1; ++j){
  71.             if (array[j]>array[j + 1]) {
  72.                 temp = array[j];
  73.                 array[j] = array[j + 1];
  74.                 array[j + 1] = temp;
  75.                 znacznik = 1;
  76.             }
  77.         }
  78.     } while (znacznik);
  79.     int stop_s = clock();
  80.     std::cout << "time: " << (stop_s - start_s) / double(CLOCKS_PER_SEC) << std::endl;
  81.     delete[] array;
  82. }
  83.  
  84. void insertionsort(int array[]){
  85.     dataType();
  86.     int start_s = clock();
  87.     int j=0,tmp;
  88.     for (int i=1; i<N; i++)
  89.     {
  90.         tmp=array[i];
  91.         j = i - 1;
  92.         while(array[j]>tmp)
  93.         {
  94.             array[j + 1] = array[j];
  95.             j--;
  96.         }
  97.     }
  98.     int stop_s = clock();
  99.     std::cout << "time: " << (stop_s - start_s) / double(CLOCKS_PER_SEC) << std::endl;
  100.     delete[] array;
  101. }
  102.  
  103. void selectionsort(int array[]){
  104.         dataType();
  105.         int start_s = clock();
  106.         for (int nr = 1; nr < N; nr++) {
  107.         min = array[nr];
  108.         indeks_min = nr;
  109.         for (int i = nr + 1; i <= N; i++) {
  110.             if (min > array[i]) {
  111.                 min = array[i];
  112.                 indeks_min = i;
  113.             }
  114.         }
  115.         array[indeks_min] = array[nr];
  116.         array[nr] = min;
  117.     }
  118.     int stop_s = clock();
  119.     std::cout << "time: " << (stop_s - start_s) / double(CLOCKS_PER_SEC) << std::endl;
  120.     delete[] array;
  121. }
  122.  
  123.  
  124. int showMenu(){
  125.     int n;
  126.     std::cout<<"Wybierz metode sortowania:\n";
  127.     std::cout<<"1) Sortowanie babelkowe\n";
  128.     std::cout<<"2) Sortowanie babelkowe z znacznikiem\n";
  129.     std::cout<<"3) Sortowanie przez wstawianie\n";
  130.     std::cout<<"4) Sortowanie przez wybor\n";
  131.     std::cout<<"5) Wyjscie\n";
  132.     std::cout<<"(1-5):";
  133.     while(n>=4 || n<=0){
  134.         std::cin>>n;
  135.         switch(n){
  136.             case 1:
  137.             bubblesort(array);
  138.             break;
  139.             case 2:
  140.             bubblesort_flag(array);
  141.             break;
  142.             case 3:
  143.             insertionsort(array);
  144.             break;
  145.             case 4:
  146.             selectionsort(array);
  147.             break;
  148.             case 5:
  149.             return 0;
  150.             break;
  151.             default:
  152.             showMenu();
  153.             break;
  154.         }
  155.     }
  156. }
  157. int main () {
  158.     srand(time(nullptr));
  159.     showMenu();
  160. }
RAW Paste Data
Top