数组包含 1,9,10,3,20,4,6,5,19等数字,写一个方法实现 数组的排序是:
最大+最小+次大+次小+。。这样排序。

解决方案 »

  1.   

    public static void main(String[] args) {
    int[] array={4,3,6,7,2,9};
    int max=array[0];
    int tap;
    for (int i = 0; i < array.length; i++) {
    max=array[i];
    for (int j = i; j < array.length; j++) {
    if(max<array[j]){
    tap=array[i];
    array[i]=array[j];
    array[j]=tap;
    }
    }
    }
    }
      

  2.   

    只做了输出,要得到数组,可以将输出赋值给一个数组public static void main(String[] args){
    int[] arr = {1,9,10,3,20,4,6,5,19};
    Arrays.sort(arr);
    int length = arr.length;
    //循环长度
    int forLength = 0;
    //数组个数奇偶
    boolean odd = false;
    if((length & 1) != 0){
    forLength = length /2 + 1;
    odd = true;
    }else {
    forLength = length / 2 ;
    }
    for(int i = 0 ;i < forLength ; i ++){
    if(odd && (i == forLength - 1)){
    System.out.println(arr[i]);
    }else 
    System.out.println(arr[length-1-i]+" -- "+arr[i]);
    }
    }
      

  3.   

    写个 用 集合类的 。。 /**
         * @param args
         */
        public static void main(String[] args)
        {
            int[] array = { 1, 9, 10, 3, 20, 4, 6, 5, 19, 25 };        Arrays.sort(array);        List list = new ArrayList();
            for (int i = array.length - 1; i >= 0; i--)
            {
                list.add(array[i]);
            }        while (list.size() > 0)
            {            System.out.println((Integer) list.get(0));
                if (list.size() == 1)
                    return;
                System.out.println((Integer) list.get(list.size() - 1));
                list.remove(list.size() - 1);
                if (list.size() == 0)
                    return;
                list.remove(0);
            }    }
      

  4.   

    就是这样 很简单 public static void main(String[] args) {
    int[] data = { 1, 9, 10, 3, 20, 4, 6, 5, 19 };
    Arrays.sort(data);
    System.out.println(Arrays.toString(data));
    List<Integer> list = new ArrayList<Integer>();
    for (int i = 0, j = data.length - 1; i <= j; i++, j--) {
    if (i != j) {
    list.add(data[j]);
    list.add(data[i]);
    } else {
    list.add(data[i]);
    }
    }
    System.out.println(list);
    }
      

  5.   

    用数组就是这样 public static void main(String[] args) {
    int[] data = { 1, 9, 10, 3, 20, 4, 6, 5, 19 };
    Arrays.sort(data);
    System.out.println(Arrays.toString(data));
    int[] result = new int[data.length];
    int p = 0;
    for (int i = 0, j = data.length - 1; i <= j; i++, j--) {
    if (i != j) {
    result[p] = data[j];
    result[p + 1] = data[i];
    } else {
    result[p] = data[i];
    }
    p += 2;
    }
    System.out.println(Arrays.toString(result));
    }
      

  6.   

    类似冒泡法,冒上来的数是我们所期望的数public class Main {    public static void main(String[] args) {
            int[] data = { 1, 9, 10, 3, 20, 4, 6, 5, 19 };
            for(int i=0;i<data.length-1;i++){//i为上浮到的位置
                for(int j=data.length-1;j>i;j--){
                    if(i%2==0){//大数
                        if(data[j]>data[i]){//把大数上浮
                            int k=data[i];
                            data[i]=data[j];
                            data[j]=k;
                        }
                    }else{//小数
                        if(data[j]<data[i]){//把大数上浮
                            int k=data[i];
                            data[i]=data[j];
                            data[j]=k;
                        }
                    }
                }
            }
            for(int i=0;i<data.length;i++){//打印结果
                System.out.println(""+data[i]);
            }
        }
    }
      

  7.   

    http://topic.csdn.net/u/20091029/15/723ca48d-78e2-46b5-9a3e-cb51549e7a52.html前几天刚出现过………………
      

  8.   

    用数组实现
     public static void main(String[] args) {
            int[] array = { 1, 9, 10, 3, 20, 4, 6, 5, 19 };
            Arrays.sort(array);
            int[] newArray = new int[array.length];
            int start = 0;
            int end = array.length;
            for (int i = 0; i < array.length; i++) {
                if (i % 2 == 0) {
                    newArray[i] = array[end - 1];
                    end--;
                } else {
                    newArray[i] = array[start];
                    start++;
                }
            }
            System.out.println(Arrays.toString(newArray));
        }
      

  9.   


    int[] arr = {1,5,9,6,3,4,2,7};
    Arrays.sort(arr);
    List<Integer> list = new ArrayList<Integer>();
    int size = arr.length;
    for(int i=0; i<size/2; i++){
    list.add(arr[size-1-i]);
    list.add(arr[i]);
    }
    if(size%2!=0){
    list.add(arr[size/2]);
    }
    System.out.println(list.toString());
    }
    }
      

  10.   

    不是很复杂,但不知道是否还有更简单的
    public class TestSort {
    public static void main(String[] args){
    int[] a={1,9,10,3,20,4,6,5,19};

    System.out.print("原始数组:");
    for(int i:a){
    System.out.print(i+"\t");
    }
    System.out.println();

    System.out.print("排 序 后:");
    Arrays.sort(a);
    for(int i:a){
    System.out.print(i+"\t");
    }
    System.out.println();

    //整理
    int[] b=new int[a.length];
    int[] index={0,1,a.length-1,-1};

    for(int i=0,m,len=a.length;i<len;i++){
    m=i%2==0?2:0;
    b[i]=a[index[m]];
    index[m]+=index[m+1];
    }
    System.arraycopy(b,0,a,0,b.length);

    //整理后
    System.out.print("整 理 后:");
    for(int i:a){
    System.out.print(i+"\t");
    }
    }
    }
      

  11.   

    /*数组包含 1,9,10,3,20,4,6,5,19等数字,
    写一个方法实现 数组的排序是: 
    最大+最小+次大+次小+。。这样排序*/
    class ArrSort
    {
    public static int[] arrSort(int [] arr)
    {
    int []arr2=new int[arr.length];
    int t;
    for(int i=0;i<arr.length;i++)
    {
    for(int j=i;j<arr.length;j++)
    {
    if(arr[i]>arr[j])
    {
    t=arr[i];
    arr[i]=arr[j];
    arr[j]=t;

    }
    }
    }
    for(int i=0;i<arr.length/2;i++)
    {
    arr2[i*2]=arr[arr.length-1-i];
    arr2[i*2+1]=arr[i];
    }
    if(arr.length%2==1)
    {
    arr2[arr.length-1]=arr[arr.length/2];
    }
    return arr2;
    }
    public static void main(String []args)
    {
    int []arr={1,9,10,3,20,4,6,5,19};
    int []arr2=new int [arr.length];
    System.out.println("the array before sort:");
    for(int i=0;i<arr.length;i++)
    {
    System.out.print(arr[i]+" ");
    }
    arr2=arrSort(arr);
    for(int i=0;i<arr.length;i++)
    {
    System.out.print(arr[i]+" ");
    }
    System.out.println();
    System.out.println("the  array afeter sort:");
    for(int i=0;i<arr2.length;i++)
    {
    System.out.print(arr2[i]+" ");
    }

    }
    }
      

  12.   

    private void test() {
    int[] array = {1,9,10,3,20,4,6,5,19};
    List<Integer> list = new ArrayList<Integer>();
    Arrays.sort(array);
    int i = 0;
    int j = array.length - 1;
    while((i != j) && (i + 1 != j)) {
    list.add(array[j--]);
    list.add(array[i++]);
    }
    if (i == j) {
    list.add(array[i]);
    }
    for (Integer listItem : list) {
    System.out.println(listItem);
    }
    }经测试,结果正确
      

  13.   

    排序之后,根据最大与最小的序号之和为(size - 1)进行输出。
      

  14.   

    定义一个数组, 先sort一下!把下标为0.2.4.。。放进一个数组把1.3.5.。。放进一个数组 convert一下!
    再插到第个数组中就行了!
      

  15.   

    C# 实现
    //数组包含 1,9,10,3,20,4,6,5,19等数字,写一个方法实现 数组的排序是: 
    //最大+最小+次大+次小+。。这样排序。
    public static int[] SpecialSort(int[] arr)
    {
        Array.Sort(arr);    List<int> ret = new List<int>();
        for (int i = 0; i < (arr.Length +1)/2; i++)
        {
            ret.Add(arr[arr.Length - i - 1]);
            if (i <  arr.Length -i -1)
            {
                ret.Add(arr[i]);
            }
        }
        int[] temp = ret.ToArray();
        return temp;
    }