c++ - How can I order an array with duplicate values? -
i want order array of stuffs may have duplicates. example:
int values[5] = {4, 5, 2, 5, -1}; int expected[5] = {1, 2, 0, 2, -1}; here 2 smallest element order 0. 4 2nd smallest order 1. 5 3rd smallest , want both of them have order 2. want skip on elements (-1 in above example) these elements have order -1.
how do in c++ or describe algorithm ?
thanks
just sort array, assign each element rank:
vector<int> v(values, values + 5); v.push_back(-1); sort(begin(v), end(v)); v.resize(unique(begin(v), end(v)) - begin(v)); (int = 0; < 5; ++i) expected[i] = lower_bound(begin(v), end(v), values[i]) - begin(v) - 1; this assumes elements non-negative or -1. if there negative elements smaller -1, need special case -1.
c++ algorithm
No comments:
Post a Comment