Например, у меня есть векторПростейший способ сортировки массива поочередно (например: T, T, F, F, F, T, F, T, F, F, F до T, F, T, F, T, F, T, F, Т, Т, Т)?
vector<pair<bool,int> > v={{true,1},{true,2},{false,3},{false,4},{false,5},{true,6},{false,7},{true,8},{false,9},{false,10},{false,11}};
, который я хочу, чтобы отсортировать его так, чтобы значение BOOL соседнего элемента отличается, если это возможно (значение междунар не требует сортировки) выход должен быть что-то как:
0,...
1,...
0,...
1,...
.
.
.
0,...
0,...
0,...
Я пытался что-то вроде этого:
sort(v.begin(),v.end());
for(int i=1;i<v.size()/2;i+=2){
iter_swap(v.begin()+i,v.end()-i);
}
, но это не мой желаемый результат:
0,3
1,8
0,5
1,2
0,9
0,10
0,11
1,1
0,7
1,6
0,4
есть ли какой-либо алгоритм для этого?
Я бы не назвал это частотным массивом, состоящим всего из двух счетчиков. –