当前位置: 首页 > 知识库问答 >
问题:

在arraylist java中按升序排序数字

郎宏逸
2023-03-14
import java.util.ArrayList;
import java.util.Random;

public class Final
{
    public static void main(String[]arg)
    {
        ArrayList<Integer>randomNumber2=new ArrayList<Integer>();
        Random rand=new Random();
        for(int i=0;i<10;i++)
        {
            randomNumber2.add(new Integer(rand.nextInt(50)));
        }
}

我创建了这个随机生成的arraylist,它生成1-50个数字。我想按升序对生成的数字进行排序。不使用集合。sort,我如何使用ArrayList进行排序?

共有3个答案

佘辰龙
2023-03-14

有很多很多排序算法,但是听起来性能不是一个问题,这可能是家庭作业...

所以试试睡眠排序吧!

import java.util.ArrayList;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;

public class Final {

    private static int count = 10;

    public static void main(String[] arg)
    {
        ArrayList<Integer> randomNumber2 = new ArrayList<Integer>();
        Random rand = new Random();

        for (int i = 0; i < count; i++) {
            randomNumber2.add(new Integer(rand.nextInt(50)));
        }

        Timer timer = new Timer();
        for(final Integer i : randomNumber2) {
            timer.schedule(new TimerTask()
            {
                public void run()
                {
                    System.out.println(i);
                    --count;
                }
            }, i * 50L);
        }
        while(count > 0){ Thread.yield();}
        timer.cancel();
    }
}
谢骏奇
2023-03-14

下面是收集的代码。对集合类进行任何类型的od保留时,也可以使用内部排序使用。您可以在类中创建此实用程序方法

public static <T extends Comparable<? super T>> void sort(List<T> list) {
   Object[] a = list.toArray();
    Arrays.sort(a);
    ListIterator<T> i = list.listIterator();
   for (int j=0; j<a.length; j++) {
   i.next();
   i.set((T)a[j]);
}
苏俊友
2023-03-14

不只是复制和粘贴代码,让我们在这里思考答案。您有10个值,希望按升序将它们添加到数组中。如果你真的在脑子里这么想,你会怎么组织呢?

一种方法(很简单,我可以在这里解释,我打赌您一定能够实现它)是将第一个数字指定给Arraylist的开头。然后,当生成第二个数字时,对照Arraylist中的第一个值进行检查,如果新生成的数字低于您对照的数字,则将第一个数字移回Arraylist中的1个插槽,并将新数字插入新的空白位置。

如果你检查一个新生成的数字,比方说Arraylist中的2个数字,这个新数字介于第一个数字和第二个数字之间,那么当你检查第一个新数字时,它会签出并继续沿着代码。然后,当您对照Arraylist中的第二个数字检查新数字并发现它较低时,您将该数字移回ArrayList中的1插槽,并将新数字插入插槽2。

如果您检查一个新生成的数字,比如说到目前为止有3个数字(这是第四次迭代),并且它得到arraylist中的第四个空值,那么您可以将新生成的数字分配给第四个插槽,因为它应该是新的最大值。

这并没有我想要的那么有意义,但我猜这是为实验室/PA/hw/之类的东西准备的;所以我希望你能接受我写的东西,理解它,并为它编写自己的代码。这不是最有效的方法,但它是一种易于理解的方法,几乎任何人都可以编写代码,非常适合简单的课堂作业。

干杯

 类似资料:
  • 我在学校的任务是创建一个程序,以升序排列数组的值。它几乎就在那里,但每当我输入“44 55 66 22 33 11 77 99 88 66”或它输出的任何数字 -858993460,11,22,33,44,55,66,66,77,88,或开头为负数 第一个数字到底怎么了?我是不是缺了什么? 我对C++很陌生,我不太明白这里的问题。如果有什么建议我可以用请告诉他们。 }

  • 我有一个通用的链表,目前由int组成,我想在默认情况下按升序排序,然后切换一个布尔值,按降序排序。我该怎么做?

  • 有人能提供帮助,如何检查排序降序数组以及?干杯!

  • 我下面的代码不起作用,我也不知道为什么。 它编译得很好,但结果似乎没有排序。

  • 本文向大家介绍程序在python中将给定的链表按升序排序,包括了程序在python中将给定的链表按升序排序的使用技巧和注意事项,需要的朋友参考一下 假设我们有一个链表。我们必须将列表按升序排序。 因此,如果输入像[5、8、4、1、5、6、3],则输出将为[1、3、4、5、5、6、8,] 为了解决这个问题,我们将按照以下步骤操作: 值:=一个新列表 头:=节点 当节点不为空时,执行 在值的末尾插入节

  • 问题内容: 我将应用程序发布的想法存储在Firestore中。数据像这个 Ideas / {documentID} / IdeaObject 一样存储在Firestore中。问题是,当我检索数据时,它没有按发布时间排序。检索到的构想根据其文档ID的ID来确定,该ID由Firestore自动创建。我在模型类中使用了 ServerTimestamp ,并且在检索它时,我在Firestore引用中使用了