一个集合存了a,b,c,e和他们各自的属性 属性分别是a=b+c+d,b=e+f ,c=m+n,e=j+k 。。按等级给a、b、c、e排序 这里可以看出a>b>e>c。这题目的是将乱序的原本乱序的集合里的abce最后变为abec的排序
我们可以这样来看,就拿a和b来说,如果a是b的父代,那么a>b, 如果a是b的子代或者a和b之间没有关系,那么a<b, 按照这个逻辑,
集合中的任意两个元素都是可以判断出大小关系的,有了大小关系怎么排序就不用解释了吧。如果你对怎么判断a是不是b的父代这种问题还有疑问的话可以继续回复我。
已知,a、b、c、d、e均为非负数,且a+b+c+d+e=1,已知a+b+c,b+c+d,c+d+e三项数值的最大值为M,求M的最小值。
可选结果 为 A: 2/3; B:1/2; C:1/3; D:1/4
解题思路:非负数的意思是≥0;
a+b+c≤M ..............①
b+c+d≤M ..............②
c+d+e≤M ..............③
因为数学运算符均为“≤”,所以可以①+③,得
a+b+c+c+d+e≤2M
即(a+b+c+d+e)+c ≤2M;
即 1+c ≤2M;因为 c≥0 ,当c=0时,M最小;
即 M≥1/2
另:假如b+c+d最大(即为M)时,也不影响结果。
可证: ①+②+③,可得
a+b+c+b+c+d+c+d+e≤3M;
即(a+b+c+d+e)+(b+c+d)+c≤3M
即 1+(b+c+d)+c≤3M
因为此时约定最大值为b+c+d=M,
则1+M+c ≤3M, 即 1+c≤2M
同样当C=0时, M最小为 1/2。
故本题答案为 B : 1/2
集合的元素是否可能为负数?
你好 元素是否负数不重要,是根据等级排序 属性里可以看出a是b、c父代,b是e父代,所以等级a>b>e,c和 b e没关系,所以排序时只要在a 后面的任何位置都行
Collections.sort(list),调用这个方法不就行了么
集合是无止境的你知道吗
Collections.sort(list,new Comparator{
public int compare(T t1,T t2){
//比较逻辑
return 0;
}
});
直接调用这个方法Collections.sort(list)
不太明白你的属性是什么
按照我自己简单的理解,写了个简单的代码,希望对你有帮助
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class ComparableObject {
private int level;
private String name;
public ComparableObject(int level,String name){
this.level = level;
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
@Override
public String toString() {
return "CompareObject [level=" + level + ", name=" + name + "]";
}
public static void main(String[] args) {
int j = 1,k = 2,m=3,n=4,f=6,d = 7;
List<ComparableObject> list = new ArrayList<ComparableObject>();
ComparableObject co_e = new ComparableObject(j+k,"e");
ComparableObject co_c = new ComparableObject(m+n,"c");
ComparableObject co_b = new ComparableObject(co_e.getLevel()+f,"b");
ComparableObject co_a = new ComparableObject(co_b.getLevel()+co_c.getLevel()+d,"a");
list.add(co_a);
list.add(co_b);
list.add(co_c);
list.add(co_e);
Collections.sort(list, new Comparator<ComparableObject>(){
@Override
public int compare(ComparableObject co_1, ComparableObject co_2) {
return co_2.getLevel()-co_1.getLevel();
}
});
System.out.println(list);
}
}
比较优势然后看看代码是否准确,映射的话编译一下
集合里面有一个自带的方法 sort() 直接调用就行 它是进行降序排序的
我想到了两种方法,Collections.sort(list)这个可以自动排序,还有就是双层for循环
最后还是自己写了个循环大递归解决啦 ,代码写的有点多, 后面猿友如果遇到类似的问题可以私信我交流