Advertisement
Guest User

Untitled

a guest
Jan 25th, 2020
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.35 KB | None | 0 0
  1. #include <vector>
  2. #include<iostream>
  3.  
  4. using namespace std;
  5.  
  6.  
  7. class Bid
  8. {
  9. public:
  10.     string _name;
  11.     int _bet;
  12.     Bid(int bet = 0, string _name = "noname") {
  13.         _bet = bet;
  14.     }
  15. };
  16.  
  17. void BuildHeap(vector <Bid>& A);
  18. void Heapify(vector <Bid>& A, int i);
  19. void Insert(vector <Bid>& A, Bid newbid);
  20. void PrintHigestBid(vector <Bid>& A);
  21. void RadixSort(vector <Bid>& A);
  22.  
  23.  
  24. void main() {
  25.     vector <Bid> A;
  26.     Bid a(78);
  27.     Bid b(25);
  28.     Bid c(53);
  29.     Bid d(59);
  30.     Bid e(46);
  31.     Bid f(37);
  32.     Bid g(29);
  33.     Bid h(17);
  34.     Bid i(41);
  35.     Bid j(21);
  36.     Bid k(30);
  37.     Bid l(8);
  38.     A.push_back(a);
  39.     A.push_back(b);
  40.     A.push_back(c);
  41.     A.push_back(d);
  42.     A.push_back(e);
  43.     A.push_back(f);
  44.     A.push_back(g);
  45.     A.push_back(h);
  46.     A.push_back(i);
  47.     A.push_back(j);
  48.     A.push_back(k);
  49.     A.push_back(l);
  50.     for (int i = 0; i < A.size(); i++)
  51.     {
  52.         cout << A[i]._bet << " ";
  53.     }
  54.     BuildHeap(A);
  55.     cout << endl;
  56.     for (int i = 0; i < A.size(); i++)
  57.     {
  58.         cout << A[i]._bet << " ";
  59.     }
  60.     Bid m(38);
  61.     Insert(A, m);
  62.     cout << endl;
  63.     for (int i = 0; i < A.size(); i++)
  64.     {
  65.         cout << A[i]._bet << " ";
  66.     }
  67.     cout << endl;
  68.  
  69.     cout << "Add evar 11 " << endl;
  70.     Bid n(30);
  71.     Insert(A, n);
  72.     cout << endl;
  73.     for (int i = 0; i < A.size(); i++)
  74.     {
  75.         cout << A[i]._bet << " ";
  76.     }
  77.     cout << endl;
  78.  
  79.     PrintHigestBid(A);
  80.  
  81.     system("pause");
  82. }
  83.  
  84.  
  85. void BuildHeap(vector <Bid>& A)
  86. { // מקבלת מערך מסוג A
  87.     int heapsize = A.size();
  88.     for (int i = (heapsize / 2) - 1; i >= 0; i--)
  89.     {
  90.         Heapify(A, i);
  91.     }
  92. }
  93.  
  94. void Heapify(vector <Bid>& A, int i)
  95. {
  96.     int l = 2 * i + 1;
  97.     int r = 2 * i + 2;
  98.     int largest;
  99.     // בודק אם הבן שמאלי גדול מהאבא
  100.     if (l < A.size() && A[l]._bet >  A[i]._bet)
  101.     {
  102.         largest = l;
  103.     }
  104.     else {
  105.         largest = i;
  106.     }
  107.     // בודק אם הבן הימני גדול מהאבא
  108.     if (r < A.size() && A[r]._bet > A[largest]._bet)
  109.     {
  110.         largest = r;
  111.     }
  112.     // אם הגודל הוא אחד מהילדים אז תחליף עם האבא
  113.     if (largest != i)
  114.     {
  115.         Bid temp(4);
  116.         temp._bet = A[i]._bet;
  117.         temp._name = A[i]._name;
  118.         A[i]._bet = A[largest]._bet;
  119.         A[i]._name = A[largest]._name;
  120.         A[largest]._bet = temp._bet;
  121.         A[largest]._name = temp._name;
  122.         Heapify(A, largest);
  123.     }
  124. }
  125.  
  126. void Insert(vector <Bid>& A, Bid newbid)
  127. {
  128.     int asize = A.size();
  129.     int fatherloc;
  130.     A.push_back(newbid);
  131.     if ((asize - 1) % 2 == 0) // אם ה
  132.     {
  133.         // אז הוא בן שמאלי
  134.         fatherloc = (asize - 1) / 2; //מיקום של האבא
  135.     }
  136.     else {
  137.         // אז הוא בן ימני
  138.         fatherloc = (asize - 2) / 2; //מיקום של האבא
  139.     }
  140.     Heapify(A, fatherloc);
  141. }
  142.  
  143.  
  144. void PrintHigestBid(vector <Bid>& A)
  145. {
  146.     if (A[0]._bet != 0)
  147.     {
  148.         cout << "The higest bid for now is: " << endl << A[0]._bet;
  149.         cout << endl << "and it's go for: " << A[0]._name << endl;
  150.     }
  151.     else {
  152.         cout << "There is no bid at this moment" << endl;
  153.     }
  154. }
  155.  
  156. void RadixSort(vector <Bid>& A)
  157. {
  158.     // the "length" of 0 is 1:
  159.     int len = 1;
  160.     // and for numbers greater than 0:
  161.     if (A[0]._bet > 0) {
  162.         // we count how many times it can be divided by 10:
  163.         // (how many times we can cut off the last digit until we end up with 0)
  164.         for (len = 0; A[0]._bet > 0; len++) {
  165.             A[0]._bet = (A[0]._bet) / 10;
  166.         }
  167.     }
  168.     //
  169.     //נבצע RADIXSORT
  170.     int d = len; // נרוץ בלולאה על המספר הכי גבוה ונשמור במשתנה אינטי את מספר הספרות שלו
  171.     // ניצור מערך בי והוא יהיה המערך
  172.     // A
  173.     // רק ממויין
  174.  
  175.     int* B;                
  176.     B = new int[A.size()]; //לא לשכוח לעשות Delete
  177.  
  178.     // בגודל A.size
  179.     //ונשלח אותו לקאונטינ סורט
  180.     for (int i = 1; i < d; i++)
  181.     {
  182.         CountingSort
  183.         //  use Counting - Sort to sort A on digit i
  184.     }
  185.  
  186. }
  187.  
  188. void CountingSort(vector <Bid>& A, int& B) //a,b,k - K זה התחום
  189. {
  190.     int* C;
  191.     C = new int[A[0]._bet+1]; // Create C arr in size K + 1
  192.     for (int i = 0; i < A[0]._bet; i++) // Inisilazie arr C to Zero
  193.             {
  194.                 C[i] = 0;
  195.             }
  196.         //מכניס איבר במערך C
  197.     // במיקום מסויים לפי איבר A
  198.     for (int j = 0; j < A.size(); j++) //Check how much the number show in A arr and put it in the number position in C arr
  199.     {
  200.         C[A[j]._bet] = C[A[j]._bet] + 1;
  201.     }
  202.     for (int i = 1; 1 < A[0]._bet; i++)
  203.     {
  204.         C[i] = C[i] + C[i - 1];
  205.     }
  206.     for (int i = A.size(); i > 1; i--)
  207.     {
  208.         B[C[A[i]._bet]] = A[i]._bet;
  209.         C[A[i]._bet]] = C[A[i]._bet] - 1;
  210.     }
  211.  
  212.  
  213.  
  214.  
  215. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement