网站首页 社会动态 > 正文
1、1.准备
1、1.快速排序算法: 快速排序算法的基本原理:通过一趟排序将排序的数据分割成两个部分,一部分的数据比另个部分的数据小,然后,按照上述原理再次对两个小部分在次分割,几次往复,就可以实现对数据的排序了。其大概过程,可以可参考下图。
2、2.打开编程软件: 打开自己的IDE如图所示,小编的是eclipse软件。
3、3.建立一个java工程: 对于java工程的小伙伴们,相信大家都是老司机了,能够自己完成的; 工程的目录层次和开始的界面,如图所示。
4、1.类的结构: 本实例中,采用一个整体的类来实现的,当然也可对不同的工程建立不不同的类,有想法的小伙伴们可以自己想想。类中涉及到,文本框,按钮,标签等属性,设计到构造方法,数据获取方法,排序方法,事件处理方法和main方法等一下方法。
5、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); }
6、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; }
7、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); } } }
8、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(""); } }
9、6.main方法: main方法的代码如下: public static void main(String[] args) { new QuickSort(); }
10、1.编译和运行: 单击eclipse工具栏中的“编译与运行”按钮,会出现我们的程序窗口界面如下图示。
11、2.排序效果: 对于出来的窗口界面,在输入框中输入相应的数据,然后单击“排序”按钮,就会出现我们的排序结果,如图中所示。
如有疑问可以留言
分享可以使我们懂得更多
14、
本文到此结束,希望对大家有所帮助。
版权说明: 本文由用户上传,如有侵权请联系删除!
- 上一篇: 什么是adv摩托(什么是AD剑圣)
- 下一篇: qq账号怎么申诉回来(qq账号怎么申诉?)
猜你喜欢:
- 2022-09-03 关于移动的停机保号费用介绍(关于移动的停机保号费用详细情况如何)
- 2022-09-03 如何学习客家话介绍(如何学习客家话详细情况如何)
- 2022-09-03 抖音二十不惑三十而已特效视频怎么做介绍(抖音二十不惑三十而已特效视频怎么做详细情况如何)
- 2022-09-03 母亲节的时候要画什么画给妈妈介绍(母亲节的时候要画什么画给妈妈详细情况如何)
- 2022-09-03 gta4优化补丁有什么用介绍(gta4优化补丁有什么用详细情况如何)
- 2022-09-03 湍流强度如何计算介绍(湍流强度如何计算详细情况如何)
- 2022-09-03 电视连续剧烽火战狼在百度怎么看不到啊介绍(电视连续剧烽火战狼在百度怎么看不到啊详细情况如何)
- 2022-09-03 英雄联盟狼人怎么出装介绍(英雄联盟狼人怎么出装详细情况如何)
最新文章:
- 2023-07-04 400万元公寓快速开单 上海中原快手理想家直播卖房势头显著
- 2023-07-04 看电影的位置最好(看电影位置有什么讲究 看电影位置有哪些讲究)
- 2023-07-04 鸠是什么鸟的图片(鸠是什么鸟)
- 2023-07-04 不要床垫直接铺褥子可以吗(褥子下面用什么可以防潮)
- 2023-07-04 干的艾草可以放卧室吗(艾草可以放卧室吗)
- 2023-07-04 金钱草可以放在卧室吗(金钱草可以放卧室吗)
- 2023-07-04 卧室可以放芦荟吗风水好吗(卧室可以放芦荟吗)
- 2023-07-04 君子兰晚上可以放卧室吗风水好吗(君子兰晚上可以放卧室吗)
- 2023-07-04 燕子掌放家里养吉祥吗(燕子掌可以放卧室吗)
- 2023-07-04 百合可以放卧室吗(刺梅可以放卧室吗)
- 2023-07-04 肠胃不好口气重怎么办(肠胃不好怎么办 肠胃不好怎么调理)
- 2023-07-04 打篮球腰扭到了怎么快速恢复(打篮球腰扭伤了怎么办 打篮球腰闪了怎么办)
- 2023-07-04 低血糖的临床表现有哪些(低血糖吃什么食物好哪些 哪些食物可以缓解低血糖)
- 2023-07-04 晕车吃什么可以快速缓解(吃什么可以有效治疗晕车 晕车后吃什么缓解)
- 2023-07-04 针灸治疗眼睛干涩针灸穴位(眼睛干涩怎么缓解 眼睛干涩怎么治疗)
- 2023-07-04 盒装牛奶可以直接放微波炉加热吗(恒温杯垫可以直接放盒装牛奶吗)