fork download
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <iterator>
  4. #include <utility>
  5. #include <vector>
  6.  
  7. using namespace std;
  8.  
  9. //Rank the values in a vector
  10. std::vector<size_t> rankSort(const float *v_temp, size_t size) {
  11. vector<size_t> v_sort;
  12. //create a new array with increasing values from 0 to n-1
  13. for (size_t i = 0U; i < size; i++) {
  14. v_sort.push_back(i);
  15. }
  16.  
  17. bool swapped;
  18.  
  19. do {
  20. swapped = false;
  21.  
  22. for (size_t i = 1U; i < size; i++) {
  23. if (v_temp[v_sort[i - 1]] > v_temp[v_sort[i]]) //error line
  24. {
  25. const size_t temp = v_sort[i - 1];
  26. v_sort[i - 1] = v_sort[i];
  27. v_sort[i] = temp;
  28. swapped = true;
  29. }
  30. }
  31. } while (swapped);
  32. return v_sort;
  33. }
  34.  
  35. std::vector<size_t> rankSort(const std::vector<float> &v_temp) {
  36. return rankSort(&v_temp[0], v_temp.size());
  37. }
  38.  
  39. int main() {
  40. const float v_temp[] = { 10.0F, 332.0F, 42.0F, 0.9F, 0.0F };
  41. const vector<size_t> v_sort = rankSort(v_temp, sizeof(v_temp) / sizeof(*v_temp));
  42.  
  43. copy(v_sort.begin(), v_sort.end(), ostream_iterator<size_t>(cout, " "));
  44. }
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
4 3 0 2 1