java 数组排序问题小弟初学请教

已知一组数字:21,25,11,32,12,35,55,77,66,要求按以下规则进行排序.第一个数最大,第二个数最小,第三个数字是剩下中的最大的,第四个数字是剩下的最小的,依次类推.

你可以这样做,首先把数组按从大到小排序,然后取中间的下标,长度为奇数的话下标为(length+1)/2,
eg: int [] temp= [77,66,55,35,33,25,21,11] //此为你排序后的数组
arraylist finallist = new array();
int l = temp.size()/2;
if (temp.size()%2 != 0){
l = l+1;
}
然后循环temp,加入finallist 中 依次这样加finallist .add(t[0]),finallist .add(t[i-1]),finallist .add(t[1]),finallist .append(t[i-2]),呵呵,就这样啊,没写代码,描述的有点乱,你慢慢理解吧
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-10-31
import java.util.*;
class Order
{
public static void main(String[] args){
int max = 0;
int min = 0;
int a[] ={21,25,11,32,12,35,55,77,66};
ArrayList list = new ArrayList();
ArrayList newlist = new ArrayList();

//先用冒泡排序法,从大到小排序
for(int k =0; k < 10; k++){
for(int i =0; i < a.length-1; i++){
if(a[i] < a[i+1]) {
max = a[i+1];
min = a[i];
a[i] = max;
a[i+1] = min;
}
}
}
//排序完毕(大到小)把排序好的数组放到list中,方便操作
for(int i=0;i<a.length;i++){
list.add(a[i]);
}

for(int i =0; i<list.size()+1; i++){
newlist.add(list.get(0)); //将最大的数插入newlist中
newlist.add(list.get(list.size()-1));//将最小的数插入newlist中
list.remove(0); //删除最大数
list.remove(list.size()-1); //删除最小数
}
//判断list中是否还有值(偶数个和奇数个是有区别的)
if(list.size()>0) {
newlist.add(list.get(0));
}
//排序完毕,输出
System.out.println(newlist);
}
}
相似回答