我有型的一千對象MyClass
算法:在數組排序對象基於約束
class MyClass{
array<MyClass> objectsBehind;
Boolean large;
}
哪裏objectsBehind
是MyClass
對象和任何對象的數組中的數組是1000的一部分原始對象。
我把它們放在一個數組中並對它們進行排序,使得一個對象出現在數組中比索引號objectsBehind
中的對象更高的索引處。例如,索引爲546的對象的排序數組中的索引大於546的數組的objectsBehind
中不能有任何對象。
我的問題是這樣的。 1000個物體中約有20個物業擁有物業large = true
。如果不違反objectsBehind
屬性,將這些「大」對象按順序分組到排序數組中是有益的。例如,它會更好,有這樣的:
array[45].large = false; array[46].large = true, array[47].large = true, array[48].large = true, array[49].large = false;
比
array[45].large = true; array[46].large = false, array[47].large = true, array[48].large = false, array[49].large = true;
在第一序列中,我有三個大的對象組合在一起,而不是讓他們在第二個例子中展開。
我想不出一個好辦法做到這一點。有任何想法嗎?
我有點困惑。在你的例子中,它看起來像你任意地將索引分配給值來按「大」值分組。如果情況並非如此,你能舉一個例子來說明如何根據'large'對有序數據進行分組嗎? – Daniel
製作兩個集合,其中'large = true'並命令它們,其中'large = false'並命令它們。否則,任何兩個'large = true'元素彼此相鄰的事實只是第一個排序標準的屬性。我想不出一個有意義的方式來包含'large = true'元素,讓它們連續,而不是破壞你的第一個標準。 – Shaz
'1000'對許多很多很多平臺來說都是如此之小,以至於在任何情況下,有序序列可能都是不相關的。但是標準庫爲你提供了模板化的容器,你甚至可以使用你自己的謂詞並重載一個給定的操作符來保持數據結構在給定字段上的順序。 – user2485710