结束语
排序算法是计算机科学中一个重要的部分,掌握好它对以后的学习有很大的帮助。目前只学习了几种基本的排序算法,还有更多的排序算法需要学习。
通过此次课程设计,第一使我进一步学习了排序算法。了解到排序算法应用广泛。及排序技术在现实生活中的重要性。第二使我感到自己知识的不足,Java中有很多东西,自己只略懂皮毛,尤其对于线程方面的知识很缺乏。还有就是发现软件工程学得很差,很多地方感到无从下手。第三使我意识到做事情要认真,要坚持。由于疏忽和马虎浪费了很多时间。开始做的时候遇到了一些困难,我放弃了,中间有好长一段时间没理它。如果坚持一下,可能很快就会解决。
最后我要感谢帮助我的学长,在做课程设计的过程中不仅给我提供了宝贵的资料和还给我提供了很多指导和建议,使我能够顺利的完成课程设计。
参考文献
[1]朱战立.数据结构 使用C语言[M].(第三版).西安:西安交通大学出版社, 2004.234-257
[2]Bruce Eckel .Java编程思想[M].(第四版).北京:机械工业出版社, 2007.6.669-672
[3]Ian Sommerville.软件工程[M].(第八版).北京:机械工业出版社, 2006.9.245-260
[4]王克宏、董丽、朱家维.Java技术及其应用[M].(第一版).北京:高等教育出版社,1999.125-138
[5]张海藩.软件工程导论[M].(第三版).北京:清华大学出版社,1998.38-41 [6]Mark Allen Weiss.数据结构与算法分析[M].(第二版) .北京:机械工业出版社,2008.3.183-195
[7]张曜、张青、郭立山.Java程序设计教程[M].(第一版).北京:清华大学出版社,2002.11.38-41
[8]James Cohoon、Jacket Davidson.Java程序设计[M].(第一版). 北京:清华大学出版社,2005.7.563-570
[9]Herbert Schildt Java实用教程[M].(第四版). 北京:清华大学出版社,2006.4.348-351 [10]宋雨、赵文清. 软件工程[M].(第一版).北京:中国电力出版社,2007.182-198
代码清单:
package SortCartoonDemo; import java.awt.*; import java.awt.event.*; import javax.swing.*;
public class SortCartoonDemo007 extends JFrame{
private Panel panel; private JLabel[]n;
20
private JLabel[] ppnumber; private JTextField inputField; private JTextField choice; private JLabel select;
private JButton kuaisuButton; //快速排序按钮 private JButton maoPaoButton; //冒泡排序按钮 private JButton duiButton; //堆排序按钮 private JButton zhiJieChaRuButton; //直接插入排序按钮 private JButton shellButton; //希尔排序按钮 private JButton zhiJieXuanZheButton;//直接选择排序按钮 private JButton guiBingButton; //归并排序按钮 private JButton jiShuButton; //基数排序按钮
private TextArea ScoreTextArea;//显示各种排序算法代码的显示框
public SortCartoonDemo007(){
Container container = getContentPane(); container.setLayout(null); panel = new Panel();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setSize(900,700);
this.setLocationRelativeTo(null); this.setResizable(false); this.setAlwaysOnTop(true);
JLabel l = new JLabel(\输入12 个数据,只能输入2组:\); select=new JLabel(\选择一种排序方法\); kuaisuButton=new JButton(\快速排序\); maoPaoButton=new JButton(\冒泡排序\); duiButton=new JButton(\堆排序\);
zhiJieChaRuButton=new JButton(\直接插入排序\); shellButton=new JButton(\希尔排序\);
zhiJieXuanZheButton=new JButton(\直接选择排序\); guiBingButton=new JButton(\归并排序\); jiShuButton=new JButton(\基数排序\); ScoreTextArea=new TextArea();
ScoreTextArea.setBounds(300, 150, 680, 500);
//各种排序算法代码:
final String kuaisuString =\快速排序\ +\+
\+\+ \用递归方法对数据元素a[low]--a[high]进行快速排序\+\+
21
\ +\+
\+\+
\ //取第一个元素为标\+\+ \ +\+
\ while(i < j && temp.key <= a[j].key) j--; //在数组的右端
准数据元素\+\+
扫描\+\+ \ if(i < j)\+\+
\ {\ +\+
\ a[i] = a[j];\+\+ \ i++;\+\+ \ }\+\+
\ while(i < j && a[i].key < temp.key) i++; //在数组的左端\ if(i < j)\+\+ \ {\ +\+
\ a[j] = a[i];\+\+ \ j--;\+\+ \ }\+\+ \+\+
\+\+
\ //对左端子集合进\ //对右端子集合进\;
final String maoPaoString =\冒泡排序\ +\+ \+\+ \\ +\+
\int i, j, flag = 1;\+\+ \DataType temp;\+\+
\for(i = 1; i < n && flag == 1; i++)\+\+ \{\ +\+ \ \
flag = 0;\+\+
for(j = 0; j < n - i; j++) //j < n - i控制
扫描\+\+
行递归\+\+ 行递归\+\+
内部循环次数\+\+ \ {\+\+
\ \ \ \
if(a[j].key > a[j + 1].key)\+\+ {\ +\+
flag = 1; //交换则flag = temp = a[j];\+\+
1\+\+
22
\ \ \ \ \;
a[j] = a[j + 1];\+\+ a[j + 1] = temp;\+\+
}\+\+
}\+\+
\}\+\+
final String duiString =\\ +\+
\int i, j, flag;\+\+ \DataType temp;\+\+
\i = h; //i为要建堆的二\j = 2 * i + 1; //j为i的左孩子\temp = a[i];\+\+ \flag = 0;\+\+
\while(j < n && flag != 1) //沿左右孩子\{\ +\+ \
if(j < n - 1 && a[j].key < a[j + 1].key) j++; //寻找左
h) //创建堆\+\+
叉树根结点下标\+\+ 结点的下标\+\+
中值较大者重复向下筛选\+\+
右孩子结点中的较大者,j为其下标\+\+ \ if(temp.key > a[j].key) //a[i].key > a[j].key\+\+
\ \ \ \ \ \
flag = 1; //标记结束筛选
条件\+\+
else{ //否则把a[j]上
a[i] = a[j];\+\+ i = j;\+\+
j = 2 * i + 1;\+\+
移 \+\+
}\+\+
\}\+\+
\a[i] = temp; //把最初的a[i]\+\+ \+
\初始化创建最大堆\+\+
\+\+ \ +\+
\int i;\+\+
\for(i = (n - 1) / 2; i >= 0; i--)\+\+ \CreatHeap(a, n, i);\+\+
赋予最后的a[j]\+\+
23
相关推荐: