TheKernel

Untitled

Mar 17th, 2022
820
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.07 KB | None | 0 0
  1. #include <iostream>
  2. #include <forward_list>
  3. #include <algorithm>
  4. #include <fstream>
  5. #include <vector>
  6.  
  7. std::vector<double> readVectorFromFile(std::string fileName)
  8. {
  9.   double x;
  10.   std::vector<double> vec;
  11.   std::ifstream fin(fileName);
  12.  
  13.   while (fin >> x)
  14.   {
  15.     if (x >= 0 && x < 1)
  16.       vec.push_back(x);
  17.   }
  18.  
  19.   return vec;
  20. }
  21.  
  22. std::vector<double> bucketSort(std::vector<double> vec)
  23. {
  24.   int n = vec.size();
  25.   std::vector<std::forward_list<double>> buckets(n);
  26.  
  27.   for (double x : vec)
  28.   {
  29.     int pos = x * n;
  30.     buckets[pos].push_front(x);
  31.   }
  32.  
  33.   for (auto list : buckets)
  34.     list.sort();
  35.  
  36.   std::vector<double> sortedVec;
  37.   for (auto list : buckets)
  38.     for (double x : list)
  39.       sortedVec.push_back(x);
  40.  
  41.   return sortedVec;
  42. }
  43.  
  44. void showVector(std::vector<double> vec)
  45. {
  46.   for (double x : vec)
  47.     std::cout << x << ' ';
  48.   std::cout << std::endl;
  49. }
  50.  
  51. int main()
  52. {
  53.   std::vector<double> vec = readVectorFromFile("vector.txt");
  54.  
  55.   showVector(vec);
  56.   vec = bucketSort(vec);
  57.   std::cout << "Sorted: ";
  58.   showVector(vec);
  59.  
  60.   return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment