`

实例051 - 使用冒泡排序法

 
阅读更多

心法领悟051:编译器可以自动计算数组长度。

例如:int[] array = {1,2,3,4,5}

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.GridBagLayout;
import javax.swing.JScrollPane;
import java.awt.GridBagConstraints;
import javax.swing.JButton;
import java.awt.Insets;
import javax.swing.JTextArea;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.Random;

public class BubbleSort extends JFrame {
    
    private JPanel contentPane;
    
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    BubbleSort frame = new BubbleSort();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    
    /**
     * Create the frame.
     */
    public BubbleSort() {
        setTitle("\u5192\u6CE1\u6392\u5E8F\u7B97\u6CD5");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        GridBagLayout gbl_contentPane = new GridBagLayout();
        gbl_contentPane.columnWidths = new int[] { 0, 0 };
        gbl_contentPane.rowHeights = new int[] { 0, 0, 0, 0, 0 };
        gbl_contentPane.columnWeights = new double[] { 1.0, Double.MIN_VALUE };
        gbl_contentPane.rowWeights = new double[] { 1.0, 0.0, 1.0, 0.0,
                Double.MIN_VALUE };
        contentPane.setLayout(gbl_contentPane);
        
        JScrollPane scrollPane = new JScrollPane();
        GridBagConstraints gbc_scrollPane = new GridBagConstraints();
        gbc_scrollPane.insets = new Insets(0, 0, 5, 0);
        gbc_scrollPane.fill = GridBagConstraints.BOTH;
        gbc_scrollPane.gridx = 0;
        gbc_scrollPane.gridy = 0;
        contentPane.add(scrollPane, gbc_scrollPane);
        
        textArea1 = new JTextArea();
        scrollPane.setViewportView(textArea1);
        
        JButton button = new JButton("\u751F\u6210\u968F\u673A\u6570");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                do_button_actionPerformed(e);
            }
        });
        GridBagConstraints gbc_button = new GridBagConstraints();
        gbc_button.insets = new Insets(0, 0, 5, 0);
        gbc_button.gridx = 0;
        gbc_button.gridy = 1;
        contentPane.add(button, gbc_button);
        
        JScrollPane scrollPane_1 = new JScrollPane();
        GridBagConstraints gbc_scrollPane_1 = new GridBagConstraints();
        gbc_scrollPane_1.insets = new Insets(0, 0, 5, 0);
        gbc_scrollPane_1.fill = GridBagConstraints.BOTH;
        gbc_scrollPane_1.gridx = 0;
        gbc_scrollPane_1.gridy = 2;
        contentPane.add(scrollPane_1, gbc_scrollPane_1);
        
        textArea2 = new JTextArea();
        scrollPane_1.setViewportView(textArea2);
        
        JButton button_1 = new JButton("\u5192\u6CE1\u6392\u5E8F\u6CD5");
        button_1.setActionCommand("\u5192\u6CE1\u6392\u5E8F\u6CD5");
        button_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                do_button_1_actionPerformed(e);
            }
        });
        GridBagConstraints gbc_button_1 = new GridBagConstraints();
        gbc_button_1.gridx = 0;
        gbc_button_1.gridy = 3;
        contentPane.add(button_1, gbc_button_1);
    }
    
    private int[] array = new int[10];
    private JTextArea textArea1;
    private JTextArea textArea2;
    
    protected void do_button_actionPerformed(ActionEvent e) {
        Random random = new Random();// 创建随机数对象
        textArea1.setText("");// 清空文本域
        for (int i = 0; i < array.length; i++) {// 初始化数组元素
            array[i] = random.nextInt(50);// 生成50以内的随机数
            textArea1.append(array[i] + "  ");// 把数组元素显示的文本域控件中
        }
    }
    
    protected void do_button_1_actionPerformed(ActionEvent e) {
        textArea2.setText("");// 清空文本域
        for (int i = 1; i < array.length; i++) {
            // 比较相邻两个元素,较大的数往后冒泡
            for (int j = 0; j < array.length - i; j++) {
                if (array[j] > array[j + 1]) {
                    int temp = array[j];// 把第一个元素值保持到临时变量中
                    array[j] = array[j + 1];// 把第二个元素值保存到第一个元素单元中
                    array[j + 1] = temp;// 把临时变量也就是第一个元素原值保持到第二个元素中
                }
                textArea2.append(array[j] + "  ");// 把排序后的数组元素显示到文本域中
            }
            textArea2.append("【");
            for (int j = array.length - i; j < array.length; j++) {
                textArea2.append(array[j] + "  ");// 把排序后的数组元素显示到文本域中
            }
            textArea2.append("】\n");
        }
    }
}

 

 

  • 大小: 10.6 KB
分享到:
评论

相关推荐

    Java中数组实例---冒泡排序.pdf

    冒泡排序是一种基础的排序算法,它的主要思想是通过重复遍历待排序的数列,依次比较相邻的两个元素,如果它们的顺序(如从小到大)错误就把它们交换过来。这个过程就像水底下的气泡一样逐渐向上冒,因此得名冒泡排序...

    5-5冒泡排序.zip

    在这个名为“5-5冒泡排序”的项目中,我们可能看到的是一个用于实现冒泡排序算法的编程实例。 首先,我们来详细解释冒泡排序的工作原理。冒泡排序的基本思想是:比较相邻两个元素,如果它们的顺序错误就把它们交换...

    基于C++冒泡排序法

    冒泡排序法是一种基础但重要的排序算法,尤其在学习数据结构和算法的初期阶段,它为理解排序原理提供了直观的示例。C++是广泛应用于系统编程、应用编程、游戏开发等多个领域的强大编程语言,因此用C++实现冒泡排序是...

    快速排序算法和冒泡排序效率对比

    总的来说,快速排序和冒泡排序都是排序算法的重要实例,它们代表了不同的时间复杂度级别和设计思路。在C#编程中,理解并掌握这两种算法有助于我们更好地理解和优化程序性能,尤其是在处理大量数据时。同时,这也为...

    工业机器人-冒泡排序法.7z

    这个压缩包“工业机器人-冒泡排序法.7z”内包含的文件“冒泡排序法.rar”很可能提供了一些关于如何在实际应用中,如工业机器人编程中,实施冒泡排序的实例或教程。 冒泡排序的工作原理如下: 1. **比较相邻元素**...

    C 冒泡排序算法的实例源代码.rar

    C 冒泡排序算法的实例源代码,一些排序方法的代码集锦,该函数模板使用冒泡法对集合元素进行排序,参数说明:  collection 集合对象,集合对象必须提供 [] 操作。  element 集合元素,该参数的作用仅仅是确定集合...

    二叉树建立遍历冒泡排序快速排序算法:C语言编程实现10个数据结构课程设计实例.zip

    二叉树建立遍历冒泡排序快速排序算法:C语言编程实现10个数据结构课程设计实例.zip 二叉树建立遍历冒泡排序快速排序算法:C语言编程实现10个数据结构课程设计实例.zip 二叉树建立遍历冒泡排序快速排序算法:C语言...

    冒泡排序算法实例

    冒泡派速算法实例,C语言编写,是简单排序算法的一种。

    冒泡排序算法原理讲解

    该 ppt 为课程讲义,讲解冒泡排序算法原理,及用一个简单实例进行具体分析,还有冒泡排序算法原理的总结等。

    C++语言的算法实现包括插入排序冒泡排序堆排序快速排序

    在提供的"Algorithms"压缩包中,包含了这些排序算法的C++实现,你可以通过阅读代码和运行实例来加深理解。代码中的注释将帮助你解析每一步操作,从而更好地学习和掌握这些基础但重要的编程技能。

    冒泡排序法改进前后的比较_冒泡排序法改进前后的比较_

    在"冒泡排序法改进前后的比较.docx"文件中,可能详细列举了不同情况下基本冒泡排序与改进冒泡排序的运行时间、比较次数和交换次数。通过对具体数据的对比,我们可以直观地看到改进后的冒泡排序在大多数情况下都有更...

    西门子PLC例程-冒泡排序法.zip

    这个例程是关于使用西门子PLC实现冒泡排序算法的实例,旨在帮助用户理解如何在PLC编程中进行数据处理和排序。 冒泡排序是一种简单直观的排序算法,它的基本思想是通过重复遍历待排序的序列,比较相邻元素并根据需要...

    C#冒泡排序算法

    冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复进行的,直到没有再需要交换,也就是说该数列已经排序完成。 ### 二、...

    冒泡排序的算法

    冒泡排序是一种基础且历史悠久的排序算法,它的主要思想是通过重复遍历待排序的数列,依次比较相邻元素并根据需要交换它们...同时,这也为我们提供了一个实践和调试排序算法的实例,有助于加深对冒泡排序的理解和应用。

    C语言冒泡排序算法详解:从原理到代码的完整教程

    C语言冒泡排序的习题集,针对C语言冒泡排序算法的重要知识点和难点,提供了大量的练习题和考试题,以及详细的答案和解析,涵盖了冒泡排序算法的原理、步骤、实现方法、优化技巧、相关概念和知识等内容,以及冒泡排序...

    毕业答辩-10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等.rar

    在"毕业答辩-10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等.rar"这个压缩包中,包含了多个关键的数据结构和算法实践案例,对于学习者来说,它们提供了宝贵的实践经验。 首先,我们要关注的是“二叉树...

    10个数据结构课程设计实例二叉树建立遍历冒泡排序快速排序等

    Hoare提出的快速排序是一种高效的排序算法,使用分治策略。快速排序.c中包含了划分和递归的过程。 - 直接选择排序:在每一轮中,选择当前未排序部分的最小(或最大)元素并将其放到已排序部分的末尾。直接选择排序...

    JAVA冒泡排序和快速排序算法

    在JAVA中,实现这两种排序算法可以使用面向对象的特性,创建一个类如`MaopaoKuaisu.java`,在这个类中定义两个方法,分别实现冒泡排序和快速排序。类的结构可能如下: ```java public class MaopaoKuaisu { public...

    冒泡排序法.zip西门子PLC编程实例程序源码下载

    冒泡排序法.zip西门子PLC编程实例程序源码下载冒泡排序法.zip西门子PLC编程实例程序源码下载冒泡排序法.zip西门子PLC编程实例程序源码下载冒泡排序法.zip西门子PLC编程实例程序源码下载 1.合个人学习技术做项目参考...

    基于Python的冒泡排序算法详解与优化

    使用场景及目标:旨在帮助读者理解和掌握冒泡排序的基础理论及实际编码应用技巧。通过实例代码加深对算法机制的理解,并探讨优化方式提高算法性能。 其他说明:尽管冒泡排序的效率不高,但它非常适合用作教学案例来...

Global site tag (gtag.js) - Google Analytics