⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 guisort.java

📁 演示各种排序算法,并且演示java中类,对象,继承等用法.
💻 JAVA
字号:
package sort_source;

import java.awt.*;
import java.awt.event.*;
import javax.swing.border.BevelBorder;
import javax.swing.*;

public class GUISort extends JFrame {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	JTextField dataText, result,arraylen;
	JButton resetButton; 
	JButton exitButton; 
	public static final int WIDTH = 300;
	private int[] data; 
	public static final int HEIGHT = 220;
    private int n;
	public static void main(String[] args) {
		new GUISort();
	}

	public GUISort() {
		setTitle("排序算法演示"); //调用父类构造函数
		setSize(WIDTH, HEIGHT);
		setResizable(false);
		setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
		try
		{    //设置外观
			UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());//getSystemLookAndFeelClassName());
		}catch(Exception e){}
		Container container = getContentPane(); //得到容器

		JMenu menuTheme = new JMenu("排序算法"); //初始化菜单
	/*String[] str = { "选择排序", "插入排序", "冒泡排序","快速排序", "归并排序", "堆排序"};
		JMenuItem items[];
		items=new JMenuItem[str.length];
		for (int i = 0; i < items.length; i++) 
		{
			items[i] = new JMenuItem(str[i]);
			menuTheme.add(items[i]);
			items[i].addActionListener(new ActionListener(){  //菜单项事件处理
		   	public void actionPerformed(ActionEvent event){
		   		sorting(str[i]);  //调用方法,改变窗口风格
		      }
		   });
		}
		 */
		JMenuItem itemSelection = new JMenuItem("选择排序"); 
		JMenuItem itemInsert = new JMenuItem("插入排序");
		JMenuItem itemBubble = new JMenuItem("冒泡排序");
		JMenuItem itemQuick = new JMenuItem("快速排序");
		JMenuItem itemMerge = new JMenuItem("归并排序");
		JMenuItem itemHeap = new JMenuItem("堆排序");
		// itemHeap.setBorder(new BevelBorder(BevelBorder.RAISED));
		menuTheme.add(itemSelection);
		menuTheme.add(itemInsert);
		menuTheme.add(itemBubble);
		menuTheme.add(itemQuick);
		menuTheme.add(itemMerge);
		menuTheme.add(itemHeap);
		menuTheme.setBorder(new BevelBorder(BevelBorder.RAISED));
		itemSelection.addActionListener(new ActionListener() { 
			public void actionPerformed(ActionEvent event) {
				if (arraylen.getText().trim().equals(""))
					JOptionPane.showMessageDialog(GUISort.this,"请输入要数列的长度!");
				else if (dataText.getText().trim().equals(""))
					JOptionPane.showMessageDialog(GUISort.this,"请输入要排序的数列!");
					else
					sorting("选择排序");
					}
				});
		itemInsert.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				if (arraylen.getText().trim().equals(""))
					JOptionPane.showMessageDialog(GUISort.this,"请输入要数列的长度!");
				else	if (dataText.getText().trim().equals(""))
					JOptionPane.showMessageDialog(GUISort.this,"请输入要排序的数列!");
				else
					sorting("插入排序");
			}
		});
		itemBubble.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				if (arraylen.getText().trim().equals(""))
					JOptionPane.showMessageDialog(GUISort.this,"请输入要数列的长度!");
				else	if (dataText.getText().trim().equals(""))
					JOptionPane.showMessageDialog(GUISort.this,"请输入要排序的数列!");
				else
					sorting("冒泡排序");
			}
		});
		itemQuick.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				if (arraylen.getText().trim().equals(""))
					JOptionPane.showMessageDialog(GUISort.this,"请输入要数列的长度!");
				else	if (dataText.getText().trim().equals(""))
					JOptionPane.showMessageDialog(GUISort.this,"请输入要排序的数列!");
				else
					sorting("快速排序");
			}
		});
		itemMerge.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				if (arraylen.getText().trim().equals(""))
					JOptionPane.showMessageDialog(GUISort.this,"请输入要数列的长度!");
				else	if (dataText.getText().trim().equals(""))
					JOptionPane.showMessageDialog(GUISort.this,"请输入要排序的数列!");
				else
					sorting("归并排序");
			}
		});
		itemHeap.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				if (arraylen.getText().trim().equals(""))
					JOptionPane.showMessageDialog(GUISort.this,"请输入要数列的长度!");
				else	if (dataText.getText().trim().equals(""))
					JOptionPane.showMessageDialog(GUISort.this,"请输入要排序的数列!");
				else
					sorting("堆排序");
			}
		});

		JMenuBar menuBar = new JMenuBar(); //初始化菜单栏
		menuBar.add(menuTheme); //增加菜单到菜单栏

		setJMenuBar(menuBar); //设置菜单

		JPanel panel = new JPanel();

		dataText = new JTextField(16);
		result = new JTextField(16);
		arraylen=new JTextField(16);
		resetButton = new JButton("重置");
		resetButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent evt) {
				arraylen.setText("");
				dataText.setText("");
				result.setText("");
			}
		});
		exitButton = new JButton("退出");
		exitButton.addActionListener( 
				new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						System.exit(0); 
					}
				});

		//panel.setBorder(BorderFactory.createTitledBorder("面向对象")); //设置边界
		panel.setBorder(new BevelBorder(BevelBorder.RAISED));
		JPanel jpanel = new JPanel();
        jpanel.add(new JLabel("数字个数"));
     //   arraylen.setBorder(new BevelBorder(BevelBorder.LOWERED));
        jpanel.add(arraylen);
        jpanel.setBorder(new BevelBorder(BevelBorder.RAISED));
        panel.add(jpanel);
        jpanel=new JPanel();
		jpanel.add(new JLabel("排序序列"));
	//	dataText.setBorder(new BevelBorder(BevelBorder.LOWERED));
		jpanel.add(dataText); 
		jpanel.setBorder(new BevelBorder(BevelBorder.RAISED));
		panel.add(jpanel);
		jpanel = new JPanel();
		jpanel.add(new JLabel("排序结果"));
	//	result.setBorder(new BevelBorder(BevelBorder.LOWERED));
		jpanel.add(result); 
		jpanel.setBorder(new BevelBorder(BevelBorder.RAISED));
		panel.add(jpanel);
		panel.add(resetButton);
		panel.add(exitButton);
		container.add(panel); 

		setVisible(true); //设置窗口可见
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序
		Dimension screen = getToolkit().getScreenSize();
		//pack();
		setLocation((screen.width - getSize().width) / 2,
				(screen.height - getSize().height) / 2);
	}

	public void sorting(String type) {
		try {
			String s = dataText.getText();
			n=Integer.parseInt(arraylen.getText());
			data= new int[n];
			getData(s);
			ChSort chsort=new ChSort();		
			if (type.equals("选择排序")) {
			   chsort.selection_sort(data);
				display();
			} else if (type.equals("插入排序")) {
				 chsort.insert_sort(data);
				display();
			} else if (type.equals("冒泡排序")) {
				 chsort.bubble_sort(data);
				display();
			} else if (type.equals("快速排序")) {
				 chsort.quick_sort(data);
				display();
			} else if (type.equals("归并排序")) {
				 chsort.merge_sort(data);
				display();
			} else if (type.equals("堆排序")) {
				 chsort.heap_sort(data);
				display();
			}
		} catch (Exception ex) { //捕捉错误
			ex.printStackTrace(); //输出错误
		}
	}

	// 将用户所输入的字符串转化为整型数
	public void getData(String str) {
		//int n = 10;
		str=str.trim();
		int[] index = new int[n - 1];
		index[0] = str.indexOf(",");
		for (int i = 1; i < n - 1; i++) {
			index[i] = str.indexOf(",", index[i - 1] + 1);
		}
		data[0] = Integer.parseInt(str.substring(0, index[0]));
		for (int i = 1; i < n - 1; i++) {
			data[i]=Integer.parseInt(str.substring(index[i-1]+1, index[i]));
		}
		data[n - 1] = Integer.parseInt(str.substring(index[n - 2] + 1));
	}
	public void display(){
		String s1 = "";
		for (int i = 0; i < n; i++) {
			s1 = s1 + data[i] + "  ";

		}
		result.setText(s1);
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -