#include <algorithm>
#include <iostream>
#include <iterator>
#include <utility>
#include <vector>
using namespace std;
//Rank the values in a vector
std::vector<size_t> rankSort(const float *v_temp, size_t size) {
vector<size_t> v_sort;
//create a new array with increasing values from 0 to n-1
for (size_t i = 0U; i < size; i++) {
v_sort.push_back(i);
}
bool swapped;
do {
swapped = false;
for (size_t i = 1U; i < size; i++) {
if (v_temp[v_sort[i - 1]] > v_temp[v_sort[i]]) //error line
{
const size_t temp = v_sort[i - 1];
v_sort[i - 1] = v_sort[i];
v_sort[i] = temp;
swapped = true;
}
}
} while (swapped);
return v_sort;
}
std::vector<size_t> rankSort(const std::vector<float> &v_temp) {
return rankSort(&v_temp[0], v_temp.size());
}
int main() {
const float v_temp[] = { 10.0F, 332.0F, 42.0F, 0.9F, 0.0F };
const vector<size_t> v_sort = rankSort(v_temp, sizeof(v_temp) / sizeof(*v_temp));
copy(v_sort.begin(), v_sort.end(), ostream_iterator<size_t>(cout, " "));
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDx1dGlsaXR5PgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vUmFuayB0aGUgdmFsdWVzIGluIGEgdmVjdG9yCnN0ZDo6dmVjdG9yPHNpemVfdD4gcmFua1NvcnQoY29uc3QgZmxvYXQgKnZfdGVtcCwgc2l6ZV90IHNpemUpIHsKCXZlY3RvcjxzaXplX3Q+IHZfc29ydDsKCS8vY3JlYXRlIGEgbmV3IGFycmF5IHdpdGggaW5jcmVhc2luZyB2YWx1ZXMgZnJvbSAwIHRvIG4tMQoJZm9yIChzaXplX3QgaSA9IDBVOyBpIDwgc2l6ZTsgaSsrKSB7CgkJdl9zb3J0LnB1c2hfYmFjayhpKTsKCX0KCglib29sIHN3YXBwZWQ7CgoJZG8gewoJCXN3YXBwZWQgPSBmYWxzZTsKCgkJZm9yIChzaXplX3QgaSA9IDFVOyBpIDwgc2l6ZTsgaSsrKSB7CgkJCWlmICh2X3RlbXBbdl9zb3J0W2kgLSAxXV0gPiB2X3RlbXBbdl9zb3J0W2ldXSkgLy9lcnJvciBsaW5lCgkJCXsKCQkJCWNvbnN0IHNpemVfdCB0ZW1wID0gdl9zb3J0W2kgLSAxXTsKCQkJCXZfc29ydFtpIC0gMV0gPSB2X3NvcnRbaV07CgkJCQl2X3NvcnRbaV0gPSB0ZW1wOwoJCQkJc3dhcHBlZCA9IHRydWU7CgkJCX0KCQl9Cgl9IHdoaWxlIChzd2FwcGVkKTsKCXJldHVybiB2X3NvcnQ7Cn0KCnN0ZDo6dmVjdG9yPHNpemVfdD4gcmFua1NvcnQoY29uc3Qgc3RkOjp2ZWN0b3I8ZmxvYXQ+ICZ2X3RlbXApIHsKCXJldHVybiByYW5rU29ydCgmdl90ZW1wWzBdLCB2X3RlbXAuc2l6ZSgpKTsKfQoKaW50IG1haW4oKSB7Cgljb25zdCBmbG9hdCB2X3RlbXBbXSA9IHsgMTAuMEYsIDMzMi4wRiwgNDIuMEYsIDAuOUYsIDAuMEYgfTsKCWNvbnN0IHZlY3RvcjxzaXplX3Q+IHZfc29ydCA9IHJhbmtTb3J0KHZfdGVtcCwgc2l6ZW9mKHZfdGVtcCkgLyBzaXplb2YoKnZfdGVtcCkpOwoKCWNvcHkodl9zb3J0LmJlZ2luKCksIHZfc29ydC5lbmQoKSwgb3N0cmVhbV9pdGVyYXRvcjxzaXplX3Q+KGNvdXQsICIgIikpOwp9