使用 RNG 的 Arraylist 冒泡排序

Posted

技术标签:

【中文标题】使用 RNG 的 Arraylist 冒泡排序【英文标题】:Arraylist bubble sort with RNG 【发布时间】:2021-12-13 06:40:27 【问题描述】:

导入 java.util.ArrayList;

公共类主

public static void main(String[] args) 

    ArrayList<Integer> list = new ArrayList<Integer>();

    System.out.println("┌──────────────────────────────────────────────────────────────┐");
    System.out.println("|Welcome this is Bubble Sort that will random generate number ");
    System.out.println("└──────────────────────────────────────────────────────────────┘");
    System.out.println("┌─────────────────────────────────────────┐");
    for (int i = 1; i <= 5; i++) 
        System.out.println("|Number " + i + " random generated number");
        int random = (int) (Math.random() * 100 + 1);// to generate tha random number
        array[i] = random;// To have random number in array
        System.out.println("| "+random);//Display the result
        list.add(random);//To store the 5 randomly  generated numbers from 1 – 100 in arraylist

    
    System.out.println("└─────────────────────────────────────────┘");
   
    System.out.println("┌──────────────────────────────────────────────────────────────┐");
    System.out.println("| before bubble sort");
        System.out.print(list);


    System.out.println("\n└──────────────────────────────────────────────────────────────┘");

    System.out.println();

    bubbleSort(list);
    System.out.println("┌─────────────────────────────────────────┐");
    System.out.println("Arraylist after bubble sort: ");
        System.out.print(list);
    System.out.println("\n└─────────────────────────────────────────┘");


static void bubbleSort(ArrayList<Integer> list) 
    int temp=0;
    boolean needNextPass = true;
    for (int k = 1; k < list.size() && needNextPass; k++) 
        //array may be sorted and next pass not needed
        needNextPass = false;
        for (int i = 0; i < list.size()-k; i++) 
            if (list.get(i).compareTo(list.get(i + 1))>0)
                 temp =  list.get(i);
                list.set(i, list.get(i + 1));
                list.set(i + 1, temp);

                needNextPass = true; // next pass still needed
            
        
    

这是输出 1]:https://i.stack.imgur.com/qHyk1.jpg

我不知道为什么 ArrayList 不会排序,有些数字只是重复而不正确排序,所以如果可能的话,任何人都可以帮助我

我试图设置 int temp;但它不会工作它的建议要添加 temp = 0;所以我试着做 temp = 1; i=1;它不会工作

【问题讨论】:

【参考方案1】:

您只需要更改 if 条件以按升序排序。 将 if (list.get(i).compareTo(list.get(i + 1)) &gt; 0) 更改为 if (list.get(i).compareTo(list.get(i + 1)) &lt; 0)

java中的compareTo

if input1 > input2, it returns positive number  
if input1 < input2, it returns negative number  
if input1 == input2, it returns 0

【讨论】:

它只适用于第一个数字,其余部分在冒泡排序之前重复 [76] [96] [55] [6] [6] 冒泡排序后的 Arraylist:[6, 76, 76, 76, 76] 移除 nextpass 变量 仍然没有任何反应

以上是关于使用 RNG 的 Arraylist 冒泡排序的主要内容,如果未能解决你的问题,请参考以下文章

Java中的ArrayList怎么进行冒泡排序

ArrayList 冒泡排序 帮忙看下这个,里面用set()如何排序啊?

冒泡排序

对 2D ArrayList 进行冒泡排序

java对Arraylist冒泡排序,怎么合理调用一个函数实现?

已知一个int型数组arraylist[],写出冒泡排序法