气泡排序说明

时间:2019-04-01 23:56:00

标签: java

我正在为Java类简介编写一个气泡代码程序,这是一个非常简单的任务。我只是好奇我的代码是否正确。问题是,我的代码可以运行,但是它与我看到的其他人发布的常规解决方案不同。我不确定我是否刚刚使用其他排序方法,或者是否编写了其他版本的冒泡排序。

下面是我编写的代码:

import java.util.Arrays;
import java.util.Random;

public class BubbleSort
{
    public static void main(String[] args)
    {
        Random ran = new Random();

        int[] list = new int[10];

        for(int i = 0; i < list.length; i++)
            list[i] = ran.nextInt(50);

        System.out.println(Arrays.toString(list));
        System.out.println(Arrays.toString(bubbleSort(list)));
    }

    public static int[] bubbleSort(int[] list)
    {
        int temp;

        for(int i = 0; i < list.length; i++)
        {
            for(int j = 0; j < list.length - 1; j++)
            {
                if(list[j] > list[j + 1])
                {
                    temp = list[j];
                    list[j] = list[j + 1];
                    list[j + 1] = temp;
                }

            }
        }

        return list;
    }
}

这很好用。但是我不确定它是否真的是“气泡排序”。

大多数人在编写同一程序时都将其保存在for loop

for(int j = 0; j < list.length - 1 - i; i++)

我的问题是,list.length - 1- i可以正常工作时,list.length - 1的作用是什么?

我是否不小心进行了其他形式的排序?他们俩都工作,我只是很好奇人们为什么会list.length - 1 - i

1 个答案:

答案 0 :(得分:0)

@markspace在评论中给了我正确答案,因此所有人都对他表示赞赏。

为了证明他的回答,我将其发布。我用10,000个整数测试了我的代码,并创建了一个计时器以查看需要多长时间。每当我使用仅对j < list.length - 1排序10,000个整数的代码时,平均要花费297毫秒。一旦将for循环更改为j < list.length - 1 - i,它就以196毫秒的速度将循环排序了35%左右。如标记所示,添加- i只是防止程序重新检查已排序的最后一个元素,从而节省了时间。