简明现代魔法 -> Java编程语言 -> SWT之路:选择排序演示

SWT之路:选择排序演示

2009-11-22

效果演示

贴代码

package SWT;

import java.util.Random;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Shell;

public class SelectionSort {

	protected Shell shell;
	static int[] numbers = new int[10];
	static List list_0;
	static List list_1;

	/**
	 * Launch the application.
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			SelectionSort window = new SelectionSort();
			window.open();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Open the window.
	 */
	public void open() {
		Display display = Display.getDefault();
		createContents();
		shell.open();
		shell.layout();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}
	}

	/**
	 * Create contents of the window.
	 */
	protected void createContents() {
		shell = new Shell();
		shell.setSize(450, 300);
		shell.setText("选择排序演示");
		{
			Group group = new Group(shell, SWT.NONE);
			group.setText("生成随机数字");
			group.setBounds(10, 10, 200, 246);
			{
				list_0 = new List(group, SWT.BORDER);
				list_0.setBounds(119, 36, 71, 200);
			}
			{
				Button button = new Button(group, SWT.NONE);
				button.setBounds(10, 36, 72, 22);
				button.setText("生成");
				button.addSelectionListener(new SelectionAdapter() {      
                    public void widgetSelected(SelectionEvent e) { 
                    	for(int i = 0; i < numbers.length; i++){
                			Random rand = new Random();
                			numbers[i] = rand.nextInt(100);
                		}
                    	list_0.removeAll();  
                        for(int i = 0; i < numbers.length; i++) {     
                        	list_0.add(numbers[i] + "");  
                          } 
                    }      
                });
			}
		}
		{
			Group group = new Group(shell, SWT.NONE);
			group.setText("选择排序后");
			group.setBounds(232, 10, 200, 246);
			{
				list_1 = new List(group, SWT.BORDER);
				list_1.setBounds(119, 36, 71, 200);
			}
			{
				Button button = new Button(group, SWT.NONE);
				button.setBounds(10, 36, 72, 22);
				button.setText("排序");
				button.addSelectionListener(new SelectionAdapter() {      
                    public void widgetSelected(SelectionEvent e) { 
                    	// 选择排序
                		for(int i = 0; i < numbers.length; i++){
                			int j = i;
                			// 将第i个数组元素与后面其它数组元素比较,若后面的元素中有比它小的,则值互换,
                			// 保证第i个数组元素始终是最小的
                			for (int k = i + 1; k < numbers.length; k++){
                				if(numbers[k] < numbers[j])
                					j = k;
                			}	
                			int temp = numbers[i];
                			numbers[i] = numbers[j];
                			numbers[j] = temp;
                		}
                		list_1.removeAll();  
                        for(int i = 0; i < numbers.length; i++) {     
                        	list_1.add(numbers[i] + "");  
                          } 
                		
                    }      
                });
			}
		}

	}
}

选择排序的思想是,将数组的第一个元素视为最小的数,然后将它与后面的元素逐一比较,若有比它小的元素,则互换它们的值,一轮比较下来,最小的数会出现在第一个位置上。然后从第二个元素开始,再进行一轮比较,得到第二小的数,以此类推。

随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们