按升序排列数组3

时间:2014-07-23 18:51:24

标签: java arrays

嗨,我是编程新手,目前仍然试图让程序的输出以升序显示,

给出了两个数组

array1={1,3,5,7}  // odd numbers

array2={2,4,6,8} // even numbers

Output= 1,2,3,4,5,6,7,8

输出将按升序排列。如何在java中为此输出编写程序。

4 个答案:

答案 0 :(得分:1)

使用ArrayList方法将两个数组合并为addAll并使用Collections.sort方法进行排序

如果您希望结果在数组中,可以使用toArray方法将ArrayList转换为array

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

class MainDemo {
    public static void main(String[] args) {
        Integer[] array1 = { 1, 3, 5, 7 };
        Integer[] array2 = { 2, 4, 6, 8 };

        List<Integer> mylist = new ArrayList<Integer>();

        mylist.addAll(Arrays.asList(array1));
        mylist.addAll(Arrays.asList(array2));

        Collections.sort(mylist);

        // Print the sorted list....
        for (Integer x : mylist) {
            System.out.println(x+" ");
        }

        // You can also convert back to array
        Integer[] FinalArray = mylist.toArray(new Integer[mylist.size()]);
        for (int i = 0; i < FinalArray.length; i++) {
            System.out.println(i);
        }

    }
}

输出:

1 2 3 4 5 6 7 8

答案 1 :(得分:0)

方法1-一个简单的解决方案是创建一个大小为(m + n)的输出数组,并逐个复制所有数组。最后,使用任何O(nLogn)排序算法对输出数组进行排序。这种方法需要O((m + n)Log(m + n))时间。

方法2 - 您可以使用Mean Heap在O((m + n)* Log(m + n))时间内合并数组。以下是详细的算法。

  1. 创建一个大小为(m + n)的输出数组。
  2. 创建一个大小为k的最小堆,并将所有数组中的第一个元素插入到堆
  3. 重复以下步骤(m + n)次。  a)从堆中获取最小元素(最小值始终为root)并将其存储在输出数组中。  b)将堆根替换为从中提取元素的数组中的下一个元素。如果数组没有任何其他元素,则用无限替换root。替换root后,堆化树。
  4. 其中m和n是给定的两个数组的大小。

答案 2 :(得分:0)

您可以合并两个数组,然后使用Arrays.sort()

int array1={1,3,5,7};

int array2={2,4,6,8};
int array[]=new int[10]; //You can change the 10 to max
int len=array1.length+array2.length;
int j=0,k=0;
for(int i=0;i<len;i++)
{
     if(j<4)
     array[i]=array1[j++];
     else array[i]=array2[k++];
}
Arrays.sort(array,0,len);

输出 = 1,2,3,4,5,6,7,8

答案 3 :(得分:-1)

加入两个数组:

        import java.util.ArrayList;
        import java.util.Arrays;
         import java.util.List;
         public class Main {
         public static void main(String args[]) {
         Int a[] = { 1,2,3 };
          Int b[] = { 4,5 };
           List list = new ArrayList(Arrays.asList(a));
            list.addAll(Arrays.asList(b));
           Object[] c = list.toArray();

    }
 }

安排一个数组升序:

             for (int j = 0; j<array.length; j++) {
              for (int k = 0; k < array.length; k++){
                   if (array[j] < array[k]) {
                     int buffer = array[j];
                  array[j] = array[k];
               array[k] = buffer; 
               }
             }
          }