补充说明下Arrays.sort();默认是按升序来排列了,需要实现java.util.Comparator,就可以直接降序来排序了。 Arrays.sort(T[] a, Comparator c) 根据指定比较器产生的顺序对指定对象数组进行排序。比较的笨的方法是枚举过去,一般用2分的方式,找本数据结构的书看看里面有很具体的介绍。
agree with a:b得到排好大小的ABc:d得到排好大小的CDA:CB:D 得到排好大小的ABCD(包含,左交错,右交错 3种结果 4种排列) =================================================== 有问题!!!!上面的得到排好序的AB和CD然后A和C比较先假设C>A D>B还是不能得出排好序的ABCD啊C>A 但C不一定大于B
A B CD AB C DA B C D A B C D ============ ABCD
brucesea(找不到工作,郁闷中 how to implement it??
A B C D E (1) A B比较,C D比较 (2次),假设A<B, C<D (2) max(A, B) 和 max(C, D)比较,(1次),即B和D比较,假设B<D,得到A<B<D, C<D (3) E二分与A B D比较,即以B为中心比较(2次),可得到A B D E的关系 (4) C再次二分与A B D比较(同时注意C<D),即以B为中心比较(2次),可得到A B C D E的关系 2+1+2+2=7决策树模型看《算法导论》8.1 n个数,决策树的叶子节点最少n!=120 高为h的决策树叶子节点最多2^h 2^h > 120 h >=7
用算法的话,就挨个比吧
用java还自己写排序,那还用java做甚?
把你你说的数字放到数组中如:
int [] a={ 1,2,3,4,5};
int b = a.length();
Arrays.sort(a);
for(int i <b;i>=0;i--){
System.out.println(a[i]);
}
打出来就OK了
-------------------------------------------------------------------------------
total 6time 7time接分
Arrays.sort(T[] a, Comparator c) 根据指定比较器产生的顺序对指定对象数组进行排序。比较的笨的方法是枚举过去,一般用2分的方式,找本数据结构的书看看里面有很具体的介绍。
通常的排序算法 如 快速,归并,堆排序 的比较次数都会
随着目标数的 排列顺序的不同 而发生变化就拿 syoumei(砸楼上的窗户,往楼下丢臭鸡蛋) 的 来说
他最后的比较次数 可能是 6次 也可能是 7次
而现在 需要的是 最终的次数不管你给的数是怎么排列的
他都只需要固定的 n次
现在 求最小 n
^-^
给出的五个数的 顺序的 任意性
何 比较次数的唯一性
为 影响大家的判断
我 还是把 这几个数
用
a1 a2 a3 a4 a5 来代替吧
因为 其中的一组数中其中一种排列方法
因为 1,2,3,4,5 只是 其中的一组数中其中一种排列方法这个题目是个ACM题
有问题!!!!上面的得到排好序的AB和CD然后A和C比较先假设C>A D>B还是不能得出排好序的ABCD啊C>A
但C不一定大于B
我 苦苦思索没有 想出来
答案 是 7次,听说要根据不同的顺序采取 不同的排序方法
据说有点小复杂
我哈没想出来 :<
a:b得到排好大小的ABc:d得到排好大小的CDA:CB:D 得到排好大小的ABCD(包含,左交错,右交错 3种结果 4种排列) ===================================================
有问题!!!!上面的得到排好序的AB和CD然后A和C比较先假设C>A D>B还是不能得出排好序的ABCD啊C>A
但C不一定大于B
CD AB
C DA B
C D A B
C D
============
ABCD
how to implement it??
(1) A B比较,C D比较 (2次),假设A<B, C<D
(2) max(A, B) 和 max(C, D)比较,(1次),即B和D比较,假设B<D,得到A<B<D, C<D
(3) E二分与A B D比较,即以B为中心比较(2次),可得到A B D E的关系
(4) C再次二分与A B D比较(同时注意C<D),即以B为中心比较(2次),可得到A B C D E的关系
2+1+2+2=7决策树模型看《算法导论》8.1
n个数,决策树的叶子节点最少n!=120
高为h的决策树叶子节点最多2^h
2^h > 120 h >=7
4) C再次二分与A B E D比较2^h >= 120 h >=7
核心代码:
public static void sort(int[] a1){
int k temp;
for(int i=0;i<a1.length;i++){
k=i;
for(int j=i+1;j<a1.length;j++){
if(a1[j]>a1[k]) k=j;
}
}
temp=a1[i];a1[i]=a[k];a1[k]=temp;}