Advertisement
Guest User

Untitled

a guest
May 16th, 2012
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.93 KB | None | 0 0
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <time.h>
  4. #include <vector>
  5. #include <windows.h>
  6. #include "klasa.h"
  7. using namespace std;
  8. int ilosc;
  9.  
  10. vector < wymierna> liczba,liczba2;
  11. void wpisz()
  12. {
  13. unsigned long long int calkowita;
  14. unsigned long long int licznik;
  15. unsigned long long int mianownik;
  16. unsigned long long int niewlasciwa;
  17. cout<<"Podaj ilosc tych liczb: "<<endl;
  18. cin>>ilosc;
  19. srand(time(0));
  20. for(int i=0;i<ilosc;i++)
  21. {
  22. calkowita=(rand()%100) * RAND_MAX + rand();
  23. licznik=(rand()%100) * RAND_MAX + rand();
  24. mianownik=(rand()%100) * RAND_MAX + rand()+1;
  25. niewlasciwa=(calkowita*mianownik)+licznik;
  26. if(i>16)
  27. mianownik=200;
  28. liczba.push_back(wymierna(calkowita,licznik,mianownik,niewlasciwa));
  29. }
  30. liczba2=liczba;
  31. }
  32. void wypisz()
  33. {
  34. for( int i = 0; i < liczba.size(); i++ )
  35. {
  36. cout << endl;
  37. cout << "Licznik: " << liczba[i].licznik << endl;
  38. cout << "Calkowita["<<i<<"]: "<<liczba[i].calkowita<<endl;
  39. cout << "Mianownik: " <<liczba[i].mianownik << endl;
  40. }
  41. }
  42. void wypisz2()
  43. {
  44. cout<<"\nposortowane:"<<endl;
  45. for(int i=0;i<liczba.size(); ++i )
  46. {
  47. cout << endl;
  48. cout << "Niewlasciwa: " << liczba[i].niewlasciwa << endl;
  49. cout << "Mianownik: " <<liczba[i].mianownik << endl;
  50. }
  51. }
  52. void sortowaniesortem()
  53. {
  54. sort(liczba.begin(), liczba.end(),mniejszy);
  55. sort(liczba.begin(),liczba.end(),mniejsiejszy);
  56. }
  57. double GetTime()
  58. {
  59. long long f,t;
  60. QueryPerformanceFrequency((PLARGE_INTEGER)&f);
  61. QueryPerformanceCounter((PLARGE_INTEGER)&t);
  62. return (double)t/(double)f;
  63. }
  64. void mergesort(int pocz, int kon)
  65. {
  66. int sr;
  67. if (pocz<kon)
  68. {
  69. sr=(pocz+kon)/2;
  70. mergesort(pocz, sr); // Dzielenie lewej części
  71. mergesort(sr+1, kon); // Dzielenie prawej części
  72. merge(pocz, sr, kon); // Łączenie części lewej i prawej
  73. }
  74. }
  75. void merge(int pocz, int sr, int kon)
  76. {
  77. vector<wymierna> t;
  78. int i,j,q;
  79. t=liczba2; // Skopiowanie danych do tablicy pomocniczej
  80. i=pocz; j=sr+1; q=pocz; // Ustawienie wskaźników tablic
  81. while (i<=sr && j<=kon)
  82. { // Przenoszenie danych z sortowaniem ze zbiorów pomocniczych do tablicy głównej
  83. if (t[i].mianownik<t[j].mianownik)
  84. liczba2[q++].mianownik=t[i++].mianownik;
  85. else
  86. liczba2[q++].mianownik=t[j++].mianownik;
  87. }
  88. while (i<=sr)
  89. liczba2[q++].mianownik=t[i++].mianownik; // Przeniesienie nie skopiowanych danych ze zbioru pierwszego w przypadku, gdy drugi zbiór się skończył
  90. }
  91.  
  92. int main()
  93. {
  94. wpisz();
  95. double czas1=0,czas2=0;
  96. double start=GetTime(); //(*)
  97. sortowaniesortem();
  98. double koniec=GetTime(); //(**)
  99. czas1=koniec-start;
  100. start=GetTime();
  101. mergesort(0,ilosc);
  102. koniec=GetTime();
  103. cout <<" czas sorta:"<<czas1<<endl;
  104. cout <<"czas wlasnej funkcji:"<<czas2<<endl;
  105. system("PAUSE");
  106. return 0;
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement