首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >气泡排序说明

气泡排序说明
EN

Stack Overflow用户
提问于 2019-04-02 07:56:00
回答 1查看 71关注 0票数 0

我正在为我的intro类编写一个气泡代码程序,这是一个非常简单的任务。我只是好奇我的代码是否正确。问题是,我的代码可以工作,但它与我见过的其他人发布的正常解决方案不同。我不确定我是做了一个不同的排序方法,还是写了一个不同版本的冒泡排序。

下面是我写的代码:

代码语言:javascript
复制
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都运行得很好,做list.length - 1- i的意义是什么?

我是不是意外地做了不同形式的排序?它们都能工作我只是好奇为什么人们要做list.length - 1 - i

EN

回答 1

Stack Overflow用户

发布于 2019-04-02 08:07:06

@markspace在评论中给了我正确的答案,所以所有的功劳都归功于他。

我只是为了证明他的答案而发布这篇文章。我用10,000个整数测试了我的代码,并创建了一个计时器,看看需要多长时间。每当我使用刚刚让j < list.length - 1对10,000个整数进行排序的代码时,平均需要297毫秒。一旦我将for循环改为j < list.length - 1 - i,它在196毫秒内就能将循环排序速度提高大约35%。正如mark所说的,添加- i只是防止程序重新检查已经排序的最后一个元素,从而节省时间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55465098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档