java如何用快速排序法对数组排序(带窗口界面)

1.准备

  • 01

    1.快速排序算法: 快速排序算法的基本原理:通过一趟排序将排序的数据分割成两个部分,一部分的数据比另个部分的数据小,然后,按照上述原理再次对两个小部分在次分割,几次往复,就可以实现对数据的排序了。其大概过程,可以可参考下图。

  • 02

    2.打开编程软件: 打开自己的IDE如图所示,小编的是eclipse软件。

  • 03

    3.建立一个java工程: 对于java工程的小伙伴们,相信大家都是老司机了,能够自己完成的; 工程的目录层次和开始的界面,如图所示。

2.编写类代码

  • 01

    1.类的结构: 本实例中,采用一个整体的类来实现的,当然也可对不同的工程建立不不同的类,有想法的小伙伴们可以自己想想。类中涉及到,文本框,按钮,标签等属性,设计到构造方法,数据获取方法,排序方法,事件处理方法和main方法等一下方法。

  • 02

    2.构造方法: 该法主要对类中的属性进行初始化,本实例中主要涉及到对界面窗口控件的初始化,代码如下: public QuickSort(){ jp.setLayout(null); jl.setBounds(30, 10, 340, 36); jp.add(jl); jl2.setBounds(30,130,100,30); jp.add(jl2); jsp_in.setBounds(30, 45, 340, 70); jp.add(jsp_in); jta_in.setLineWrap(true); jsp_out.setBounds(30, 165, 340, 170); jp.add(jsp_out); jta_out.setLineWrap(true); jb_act.setBounds(200, 125, 70, 30); jp.add(jb_act); jb_cle.setBounds(300, 125, 70, 30); jp.add(jb_cle); jb_act.addActionListener(this); jb_cle.addActionListener(this); this.add(jp); this.setTitle("选择法排序"); this.setBounds(100, 100, 400, 400); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); this.setResizable(false); }

  • 03

    3.数据获取方法: 该方法主要对从窗口的文本框空间中获取的数据进行相关的处理,用于获取我们想要输入的数组,主要涉及到对数据的检验和数据的转换,代码如下: public void getArray(){ String arrayStr=jta_in.getText().trim(); if(arrayStr.equals("")){ JOptionPane.showMessageDialog(null,"请输入数字内容"); return; } for(int i=0;i<arrayStr.length();i++){ char charAt=arrayStr.charAt(i); if(!Character.isDigit(charAt)&&(charAt!=' ')&&(charAt!='.')){ JOptionPane.showMessageDialog(null,"输入包含非数字内容"); jta_in.setText(""); return; } } String[] numStrs=arrayStr.split(" {1,}"); double[] numArray=new double[numStrs.length]; for(int i=0;i<numArray.length;i++){ String[] temp=numStrs[i].split(".{1,}"); char[] tempstrs=numStrs[i].toCharArray(); if((tempstrs[0]=='.')||(tempstrs[tempstrs.length-1]=='.')||(temp.length>=3)){ JOptionPane.showMessageDialog(null,"输入包含非数字内容"); jta_in.setText(""); return; } numArray[i]=Double.valueOf(numStrs[i]); } array=numArray; }

  • 04

    4.排序方法: 该方法是本实例实现的核心代码,主要采用快速排序法对数据进行排序,代码如下,有些晦涩难懂,希望老司机小伙伴们认真的读读: public void quickSort(double[] sortarray,int lowIndex,int highIndex){ int lo=lowIndex; int hi=highIndex; double mid; if(highIndex>lowIndex){ mid=sortarray[(lowIndex+highIndex)/2]; while(lo<=hi){ while((lo<highIndex)&&(sortarray[lo]<mid)){ ++lo; } while((hi>lowIndex)&&(sortarray[hi]>mid)){ --hi; } if(lo<=hi){ double temp; temp=sortarray[lo]; sortarray[lo]=sortarray[hi]; sortarray[hi]=temp; for(int k=0;k<array.length;k++){ jta_out.append(array[k]+"  "); } jta_out.append("\n"); ++lo; --hi; } } if(lowIndex<hi){ quickSort(sortarray,lowIndex,hi); } if(lo<highIndex){ quickSort(sortarray,lo,highIndex); } } }

  • 05

    5.事件处理方法: 用于对按钮事件的处理,实现gui人机交互,具体代码如下: public void actionPerformed(ActionEvent e){ if(e.getSource()==jb_act){ getArray(); quickSort(array,0,array.length-1); }else{ jta_in.setText(""); jta_out.setText(""); } }

  • 06

    6.main方法: main方法的代码如下: public static void main(String[] args) { new QuickSort(); }

3.效果验证

  • 01

    1.编译和运行: 单击eclipse工具栏中的“编译与运行”按钮,会出现我们的程序窗口界面如下图示。

  • 02

    2.排序效果: 对于出来的窗口界面,在输入框中输入相应的数据,然后单击“排序”按钮,就会出现我们的排序结果,如图中所示。

(0)

相关推荐

  • 如何用VB做下拉列表框选取年份窗口

    在很多软件中都有选取年份的窗口,可以用VB的编程软件来设计,那么如何用VB做下拉列表框选取年份窗口呢,其实很简单,按照以下几个基本步骤,反复操作4次,就可以把选取年.月.日.时程序的窗口做出来,大家也 ...

  • 如何关闭天正T20自带的界面

    天正T20版本自带的界面,很多感觉使用不习惯,想要使用Autocad自带的软件界面,主要介绍如何打开Autocad自带界面,并关闭T20自带界面 操作方法 01 本文以天正电气T20版本为例,首先打开 ...

  • 如何用闪迪u盘自带软件加密和解密

    买了闪迪的U盘又不会加密可以看看这个噢,用自带的软件就可以了 安装 01 如果买回来的时候删除了可以网上下载回来的,搜SanDisk SecureAccess找到电脑对应的下载即可 02 然后把San ...

  • word2016如何用邮件合并批量制作带照片的准考证

    有时候需要制作并打印大量的准考证,如果一个一个的手动制作会非常麻烦,同时还容易出错,其实我们如果合理的利用邮件合并功能,就可以方便的批量制作准考证了.下面就一起来看一下如何利用邮件合并功能批量制作带照 ...

  • 如何用华为mate9手机自带录音机录音转文本

    华为mate9手机用户可以使用本机自带的录音机应用自动将录音转化为文本,这种转化是随着录音同步进行的,录音完成之后,应用还可以进行一次整体校正,校正之后会使录音转化的文本更准确,具体操作方法我将通过下 ...

  • C语言代码快速排序法

    操作方法 01 系统win7. 02 工具:VC++6.0 03 步骤: 04 VC++中,有时候写的时候有点乱,一两行还可以慢慢调整,多了就麻烦啦,如图够乱 05 接下来我教你快速排序,看的也舒服, ...

  • 几何画板如何用菜单法快速制作垂线

    在几何画板中又喝多制作垂线的工具,这里我们来看看两种最简单的制作垂线的方法. 一.绘制点和线 01 打开几何画板单击侧边栏"线段直尺工具"在画布上面绘制一条线. 02 单击侧边栏& ...

  • 如何用替换法一次性删除Word2007中的所有空行

    ①在“开始”菜单栏中找到“编辑”组,然后点击“编辑”组里的“替换”按钮。 ②在弹出的“编辑和查找”对话框中单击“更多”按钮。 ③把光标定位在“查找内容”右边的方框内,然后单击下方的“特殊格式”按钮。 ...

  • 如何用CDR做一个圆形带字母的LOGO

    一个圆形的LOGO很常见,在制作的时候往往出现一些小的问题.今天我们就来学习一下吧 操作方法 01 首先打开CDR软件,画一个圆形.一定记得按住CTRL键哦!不然会不是一个正圆. 02 按住SHIFT ...