当前位置: 首页 > 面试题库 >

BubbleSort实施

刘兴朝
2023-03-14
问题内容

我尝试实现冒泡排序,但是不确定它是否正确。如果您可以看一下它,并且它是气泡式的,并且可以通过更好的方式完成,请不要害羞。这是代码:

package Exercises;

import java.util.*;

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

        int[] list = new int[11];
        for(int i=0; i<list.length; i++)
        {
            list[i] = generator.nextInt(10);
        }

        System.out.println("Original Random array: ");
        printArray(list);

        bubbleSort(list);

        System.out.println("\nAfter bubble sort: ");
        printArray(list);
    }

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

        }
    }

    public static void printArray(int[] list)
    {
        for(int i=0; i<list.length; i++)
        {
            System.out.print(list[i] + ", ");
        }
    }
}

问题答案:

这是冒泡排序的正常实现,似乎还可以。可以进行几种优化,但是总体思路是相同的。这里有一些想法:

  • 如果在内循环中未执行任何交换时,外循环有一个迭代,则中断,无用继续
  • 在外循环的每次迭代中,交换内循环的方向-从左至右执行一次,然后从右至左执行一次(这有助于避免元素向右端缓慢移动)。


 类似资料:
  • 问题内容: 为什么我的打印输出数组未在以下代码中排序? 问题答案: 您需要两个循环来实现Bubble Sort。 样例代码:

  • 问题 用冒泡排序对长度为 n 的无序序列 s 进行排序。 解法 本问题对无序序列 s 升序排序,排序后 s 是从小到大的。 将长度为 n 的序列 s 分为 left 和 right 两个部分,其中 left 是无序部分,范围为 s[0,k] , right 是有序部分,范围为 s[k+1,n-1] ,其中 0 lt k le n 。初始时 left 范围为 s[0,n-1] , right 为空。

  • 我从同事那里听说C比Java快,在寻找最佳性能时,尤其是对于金融应用程序,这是要走的路。但我的观察有点不同。有人能指出我实验的失败之处,或者在讨论中添加一些科学变量吗? 注意 1:我正在使用 -O3(最大优化)和 -O2 与 C 编译器。 注2:每种语言的简短完整的源代码都包括在内。随意在自己的机器上运行,做出改变,得出结论,分享。 注3:如果您将两个源代码并排放在编辑器中,您将看到它们的实现是等

  • 我正在试图理解为什么我的productTable。我的bubblesort代码的长度必须为-2才能工作。 我创建了两个int变量,Last_Position和i。我创建了一个名为temp的产品变量和一个名为交换的bool,它被设置为false。然后,我将Last_Position设置为相等productTable。长度-2。 这就是我无法理解的地方,从我读过的文章来看。长度计算字符数并返回字符数。

  • 问题内容: 内容: 我的问题与我正在像SO这样开发的论坛有关,那里有: 有权查看主题但无法回复或投票的访客 拥有足够代表的成员可以编辑/投票其他线程,并且默认情况下,他们可以答复并具有与来宾相同的特权 几乎可以做任何事情的管理员 我希望将此ACL应用于整个站点,并且默认情况下拒绝所有资源。 我阅读了使用Zend_Acl的基础知识- 您基本上可以创建角色(guest,member,admin),并拒

  • 问题内容: 我看过几个网站,这些网站向您显示数据库中正在发生的事情的实时更新。一个例子可能是 股票行情实时显示股票价格的网站 显示诸如“其他用户当前正在搜索的内容”之类的数据。 我认为这将涉及某种轮询机制,该机制每隔几秒钟会查询一次数据库并将其呈现在网页上。但是,从性能角度考虑时,这种想法使我感到恐惧。 在我正在处理的应用程序中,我需要显示用户提交的操作的实时状态。用户等待该过程完成。当操作完成时