Advertisement
Guest User

Untitled

a guest
Apr 15th, 2015
302
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.13 KB | None | 0 0
  1. #include <iostream>
  2. #include <time.h>
  3. #include <cstdlib>
  4. #include <string>
  5. #include <sstream>
  6.  
  7.  
  8. using namespace std;
  9.  
  10. time_t showTime(time_t start,time_t endTime)
  11. {
  12.     cout << endl << "Processing time: " << difftime(endTime,start) << endl;
  13.     return difftime(endTime,start);
  14. }
  15.  
  16. void showArr(int array[], int size){//tablica poprawnie przekazana do funkcji
  17.     for(int i = 0;i < size;i++)
  18.     {
  19.         cout << array[i] << ',';//tu wyskakuje blad (segmentation fault)
  20.     }
  21.     cout << endl;
  22. }
  23.  
  24.  
  25. void insertSort(int arr[],int n,time_t *tt)
  26. {
  27.      int i,j,k,elem;
  28.      time_t start,endTime;
  29.      time(&start);
  30.      for(i = (n-2);i >= 0;i--)
  31.      {
  32.          j = n - 1;
  33.          elem=arr[i];
  34.          while(j > i && arr[j]>=elem)
  35.             j--;
  36.          for(k = i;k < j;k++)
  37.             arr[k]=arr[k+1];
  38.          arr[j]=elem;
  39.          showArr(arr,n);
  40.      }
  41.      time(&endTime);
  42.      *tt = showTime(start,endTime);
  43. }
  44.  
  45. void bubbleSort(int arr[],int n,time_t *tt)
  46. {
  47.     int i,j,tmp;
  48.     time_t start,endTime;
  49.     time(&start);
  50.     for(i = 0;i < n - 1;i++)
  51.     {
  52.         for(j = (n-1);j > i;j--)
  53.             if(arr[j] < arr[j-1])
  54.             {
  55.                 tmp=arr[j];
  56.                 arr[j]=arr[j-1];
  57.                 arr[j-1]=tmp;
  58.             }
  59.      showArr(arr,n);
  60.      }
  61.      time(&endTime);
  62.      *tt = showTime(start,endTime);
  63. }
  64.  
  65. void mergeArr(int arr[],int arrAux[], int nFrom, int nCenter, int nTo)
  66. {
  67.     int j = nFrom,k = nCenter;
  68.     for(int i = nFrom;j < nCenter || k < nTo;i++)
  69.     {
  70.         if(j == nCenter)
  71.         {
  72.             arrAux[i] = arr[k];
  73.             k++;
  74.         }
  75.         else if(k == nTo)
  76.         {
  77.             arrAux[i] = arr[j];
  78.             j++;
  79.         }
  80.         else
  81.         {
  82.             arrAux[i] = arr[j] <= arr[k] ? arr[j] : arr[k];
  83.             if(arr[j] <= arr[k])j++;
  84.             else k++;
  85.         }
  86.     }
  87.     for(int i = nFrom;i < nTo;i++)
  88.         arr[i] = arrAux[i];
  89. }
  90.  
  91. void auxMergeSort(int arr[],int arrAux[], int nFrom, int nTo)
  92. {
  93.     if(nFrom<nTo-1)
  94.     {
  95.         int nCenter=(nFrom+nTo)/2;
  96.         auxMergeSort(arr,arrAux,nFrom,nCenter);
  97.         auxMergeSort(arr,arrAux,nCenter,nTo);
  98.         mergeArr(arr,arrAux,nFrom,nCenter,nTo);
  99.     }
  100. }
  101. void mergeSort(int arr[],int len,time_t *tt)
  102. {
  103.     time_t start,endTime;
  104.     time(&start);
  105.     int *arr2=new int[len];
  106.     auxMergeSort(arr,arr2,0,len);
  107.     delete []arr2;
  108.     time(&endTime);
  109.     *tt = showTime(start,endTime);
  110. }
  111. int * loadArray(int size){
  112.     int *arr = new int(size);
  113.     int *p = arr;
  114.     if(arr == NULL)
  115.         return NULL;
  116.     else
  117.     {
  118.         for(int i = 0;i < size;i++)
  119.         {
  120.             *p = rand()%100;
  121.             p++;
  122.         }
  123.         return arr;//tablica poprawnie zaalokowana
  124.     }
  125. }
  126.  
  127. int main()
  128. {
  129.     srand(1);
  130.     time_t one,two,three;
  131.     int *ar = loadArray(1000);
  132.     insertSort(ar,1000,&one);
  133.     delete ar;
  134.     ar = loadArray(1000);
  135.     insertSort(ar,1000,&two);
  136.     delete ar;
  137.     ar = loadArray(10000);
  138.     insertSort(ar,100,&three);
  139.     delete ar;
  140.     cout << "\nOne: " << one << "\nTwo: " << two << "\nThree: " << three;
  141.     return 0;
  142. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement