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

2019-03-15 20:20

陕西理工学院毕业设计

开始初始化Ni<=m&&j<=tYNsr[i]

(6) 堆排序

堆排序算法流程图如图3.7所示。

第 18 页 共 80 页

陕西理工学院毕业设计

开始初始化j0j=2*jYString x = num[i];num[i] = num[j];num[j] = x;i = j;N结束图3.7 堆排序算法流程图

(7) 链表插入排序

链表插入排序算法流程图如图3.8所示。

开始初始化Ni< nodes.lengthYq = 0;p=nodes[0].getNext();Nnodes[i]和nodes[p]比较Yi++q = p;p=nodes[p].getNext();nodes[q].setNext(i);nodes[i].setNext(p);结束图3.8 链表插入排序算法流程图

(8) 基数(MSD)排序

基数(MSD)排序算法流程图如图3.9所示。

第 19 页 共 80 页

陕西理工学院毕业设计

开始初始化power < 0YNi < data.lengthYNpower < data[i].length()Ypos = (int)data[i].charAt(power) - 97;pos = 0;temp[pos][order[pos]] = data[i];order[pos]++;++power;Ni < 26i++YNorder[i]>1&&power

Ni++i++Nj++N

第 20 页 共 80 页

陕西理工学院毕业设计

4实现

4.1 直接插入排序

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

public void insertSortToShow(String[] src, int index) { units = DataUtil.getUnitDataForBase(src); MyFactory.getContentPanel().setUnits(units); if (HanziToPinyin.getPingYin(src[index]).compareTo(HanziToPinyin. getPingYin(src[index - 1])) < 0) { src[0] = src[index]; //数组拷贝及代码跟随 src[index] = src[index - 1]; int j = index - 2; for (; HanziToPinyin.getPingYin(src[0]).compareTo(HanziToPinyin. getPingYin(src[j])) < 0; j--) { //找出插入位置 } src[j + 1] = src[0]; //src[0]插入到插入位置 } repaintUnit(500); }

4.2 折半插入排序

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

public void binaryInsertionSortToShow(String[] src, int index) { units = DataUtil.getUnitDataForBase(src); // 获取显示数据 MyFactory.getContentPanel().setUnits(units); //将src[i]暂存在src[0] src[0] = src[index]; //数组拷贝及代码跟随 int low = 1, high = index - 1; //--代码跟随 MyFactory.getAccessoryPanel().setSelectIndexs(new int[]{2}); // 在src[low...high]中折半查找 SortUtils.refreshUnit(units); // 初始化Units initUnits(units, low, high); // 延迟time后重绘

第 21 页 共 80 页

陕西理工学院毕业设计

repaintUnit(1000); while (low <= high) { ......找出插入位置 } MyFactory.getContentLayoutPanel().repaint(); // 记录后移 for (int j = index - 1; j >= high + 1; j--) { ......记录后移 } ......将src[0]插入到指定位置 }

4.3选择排序

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

public void selectSortToShow(String[] src, int index) throws SortPlayingException { units = DataUtil.getUnitDataForBase(src); // 获取显示数据 MyFactory.getContentPanel().setUnits(units); //--代码跟随 MyFactory.getAccessoryPanel().setSelectIndexs(new int[]{1}); int j = selectMinKeyToShow(src, index); if (j != index) { String temp = src[index]; src[index] = src[j]; src[j] = temp; //--代码跟随 MyFactory.getAccessoryPanel().setSelectIndexs(new int[]{3,4,5}); changeUnit(units, index, j); } }

4.4快速排序

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

public int partitionToShow(String[] l,int low,int high) { SortUtils.repaintUnit(500); //用字表的第一个记录轴的记录 l[0] = l[low]; //--代码跟随 MyFactory.getAccessoryPanel().setSelectIndexs(new int[]{1}); SortUtils.copyUnit(units,units.get(low),units.get(0)); //显示内存处理

第 22 页 共 80 页


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

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

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

马上注册会员

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