Java 排序数组,排序数组列表,使用集合

Java 排序数组,排序数组列表,使用集合,java,arrays,string,primitive-types,Java,Arrays,String,Primitive Types,好的,还在学习数组。 我编写了这段代码,用0到1之间的随机数填充名为“rand”的数组(独占)。 我想开始学习复杂性。 For循环执行n次(100次),每次都需要O(1)次,所以最糟糕的情况是O(n),对吗? 另外,我使用ArrayList存储了100个元素,导入了“Collections”,并使用Collections.sort()方法对元素进行排序 import java.util.Arrays; public class random { public st

好的,还在学习数组。 我编写了这段代码,用0到1之间的随机数填充名为“rand”的数组(独占)。 我想开始学习复杂性。 For循环执行n次(100次),每次都需要O(1)次,所以最糟糕的情况是O(n),对吗? 另外,我使用ArrayList存储了100个元素,导入了“Collections”,并使用Collections.sort()方法对元素进行排序

import java.util.Arrays;
    public class random
    {
        public static void main(String args[])
        {
            double[] rand=new double[10];

                    for(int i=0;i<rand.length;i++)
                    {
                        rand[i]=(double) Math.random();
                        System.out.println(rand[i]);
                    }   

                    Arrays.sort(rand);
                    System.out.println(Arrays.toString(rand));
        }
    }
导入java.util.array;
公共类随机
{
公共静态void main(字符串参数[])
{
double[]兰德=新的double[10];

对于(int i=0;i是的,您是正确的,添加N个项目的复杂性为O(N)。根据文档,在大多数情况下,排序需要额外的O(N*log(N)):

排序算法是一个调整过的快速排序,改编自Jon L。 Bentley和M.Douglas McIlroy的“设计排序函数”, 《软件实践与经验》,第23卷(11)第1249-1265页(11月) 该算法在许多数据集上提供n*log(n)性能 这会导致其他快速排序降级为二次性能

ArrayList
仍然由一个数组支持,因此复杂性将是相同的,除了偶尔调整大小(无论如何都要摊销)

import java.util.ArrayList;
import java.util.Collections;

public class random
{
    public static void main(String args[])
    {
        ArrayList<Double> MyArrayList=new ArrayList<Double>();


        for(int i=0;i<100;i++)
        {               
            MyArrayList.add(Math.random());
        }

        Collections.sort(MyArrayList);


        for(int j=0;j<MyArrayList.size();j++)
        {
            System.out.println(MyArrayList.get(j));
        }

    }
}