基于姓名排序算法动态演示系统的设计与实现说明书(6)

2019-03-15 20:20

陕西理工学院毕业设计

//轴记录关键字 String pivotkey = l[low]; //--代码跟随 MyFactory.getAccessoryPanel().setSelectIndexs(new int[]{2}); //从表的两端交替向中间扫描 while(low < high) { ......从表的两端交替向中间扫描 } ......将l[0]插入到指定位置 return low; }

4.5归并排序

将字符串数组封装为Vector,同时利用GUI在ContentPanel(中间JPanel)中绘制数据;将movingUnit()完成数组的移动与交换。AccessoryPanel(右边JPanel)中加入JList,通过JList.setSelectedIndices(int[] i)完成代码跟随。将MyFactory.getAccessoryPanel().setSelect- Indexs(new int[]{});该方法切入到排序代码完成排序算法每一步实现效果。实现代码如下:

private void mergeToShow(String[] sr,int s,int m,int t) { String[] tmp = new String[t - s +1]; //临时数据存储 Vector tmpUnits = new Vector(t-s+1); int curx = units.get(s).getPoint().x; int i=s, k = 0,j = m+1; //--代码跟随 MyFactory.getAccessoryPanel().setSelectIndexs(new int[]{2}); for(;i<=m && j <= t;k++) { ......将sr[i...m] 和sr[j...t]归并 }//for end if(i <= m) //将剩余的sr[i...m]复制到tmp中 { ......将剩余的sr[i...m]复制到tmp中 }//if end if(j <= t) //将剩余的sr[j...t]复制到tmp中 { .....将剩余的sr[j...t]复制到tmp中 }//if end System.arraycopy(tmp, 0, sr, s, tmp.length); //--代码跟随 MyFactory.getAccessoryPanel().setSelectIndexs(new int[]{20}); movingUnitList(units,tmpUnits,s,t); }

4.6链表插入排序

将字符串数组封装为LinkData,同时利用GUI在ContentPanel(中间JPanel)中绘制数据。将moveArrows()切入到排序代码中,完成箭头的移动;flashNext()切入到排序代码中完成next索引选择处理效果。AccessoryPanel(右边JPanel)中加入JList,通过JList.setSelectedIndices

第 23 页 共 80 页

陕西理工学院毕业设计

(int[]i)完成代码跟随。将MyFactory.getAccessoryPanel().setSelectIndexs(new int[]{});该方法切入到排序代码完成排序算法每一步实现效果。实现代码如下:

public void updateNextToShow(Node[] nodes, int i, int ibefore) { ......初始化i、q、p while (HanziToPinyin.getPingYin(nodes[i].getValue()).compareTo( HanziToPinyin.getPingYin(nodes[p].getValue())) > 0) { ......找出插入的位置 } //--代码跟随 MyFactory.getAccessoryPanel().setSelectIndexs(new int[]{8}); flashNext(linkData, q); // q next修改 nodes[q].setNext(i); linkData.getNextUnit()[q].setValue(i + \ //--代码跟随 MyFactory.getAccessoryPanel().setSelectIndexs(new int[]{9}); flashNext(linkData, i); // q next修改 nodes[i].setNext(p); linkData.getNextUnit()[i].setValue(p + \ }

4.7堆排序

将字符串数组封装为Vector,同时利用GUI在ContentPanel(中间JPanel)中绘制数据。将SortUtils.changeUnit()切入到排序代码中,完成数组拷贝与赋值。AccessoryPanel(右边JPanel)中加入JList,通过JList.setSelectedIndices(int[] i)完成代码跟随。将MyFactory.getAccessoryPanel().setSelectIndexs(new int[]{});该方法切入到排序代码完成排序算法每一步实现效果。实现代码如下:

public void adjustHeapToShow(String[] num, int s, int t) { ......初始化显示数据 int i = s; for (int j = 2 * i; j <= t; j = 2 * j) { if (j < t && HanziToPinyin.getPingYin(num[j]).compareTo( HanziToPinyin.getPingYin(num[j + 1]))<0) j = j + 1;// 找出较大者把较大者给num[i] if (HanziToPinyin.getPingYin(num[i]).compareTo(HanziToPinyin.getPingYin(num[j]))>0) break; //--代码跟随 MyFactory.getAccessoryPanel().setSelectIndexs(new int[]{7,8,9}); String x = num[i]; num[i] = num[j]; num[j] = x; SortUtils.changeUnit(units, j-1, i-1); i = j; } SortUtils.repaintUnit(0); }

第 24 页 共 80 页

陕西理工学院毕业设计

4.8基数排序(MSD)

将字符串数组封装为RadixData,同时利用GUI在ContentPanel(中间JPanel)中绘制数据。将SortUtils.copyRadixUnit()切入到排序代码中,完成单元到临时数组的拷贝动画。AccessoryPanel(右边JPanel)中加入JList,通过JList.setSelectedIndices(int[] i)完成代码跟随。将MyFactory.getAccessoryPanel().setSelectIndexs(new int[]{});该方法切入到排序代码完成排序算法每一步实现效果。实现代码如下:

public void msdToShow(String[] data, int power, int isGo,int index) { ......初始化显示数据 int pos = 0; if (power < 0) return; for (int i = 0; i < data.length; i++) { if (data[i] == null || \ break; String pyData = HanziToPinyin.getPingYin(data[i]); if (power < pyData.length()) { pos = (int) pyData.charAt(power) - 97; } else { pos = 0; } //--代码跟随 MyFactory.getAccessoryPanel().setSelectIndexs(new int[]{15}); SortUtils.copyRadixUnit(radixData, i, pos, order[pos], 0); temp[pos][order[pos]] = data[i]; radixData.setTempUnits(DataUtil.getUnitRadixTemp(temp)); SortUtils.repaintUnit(30); order[pos]++; //--代码跟随 MyFactory.getAccessoryPanel().setSelectIndexs(new int[]{16}); radixData.setOrder(DataUtil.getUnitOrder(order)); SortUtils.repaintUnit(30); } ++power; if (isGo <= 0) { msdToShowForLast(data, temp,index); } }

第 25 页 共 80 页

陕西理工学院毕业设计

5测试

在Java虚拟机中运行该系统,得到系统运行界面,导入排序数据(周生、丁模、吕学、许要、其勉、龚学、尹要、贺勉、郝生、姜模),点击直接插入排序按钮,并点击开始按钮,进入直接插入排序过程界面,排序过程界面如图5.1所示,运行结果界面如图5.2所示。

图5.1 直接插入排序过程界面

图5.2 直接排序运行结果

点击折半插入排序按钮,并点击开始按钮,进入折半直接插入排序过程界面如图5.3所示,运行结果界面如图5.4所示。

第 26 页 共 80 页

陕西理工学院毕业设计

图5.3 折半插入排序运行状态

图5.4 折半插入排序运行结果

点击快速排序按钮,并点击开始按钮,进入快速排序过程界面如图5.5所示,运行结果界面如图5.6所示。

第 27 页 共 80 页


基于姓名排序算法动态演示系统的设计与实现说明书(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:智能传感器在数字化时代下应运而生

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: