JAVA快速排序算法课设
时间:2025-04-03
时间:2025-04-03
利用JAVA进行快速排序算法演示
一、设计目的
加深对理论教学内容的理解,掌握图形界面设计,熟悉java.awt包的组件,掌握图形界面设计方法,理解事件处理模型。从而检测对这门课的掌握情况,有助于及时查漏补缺,使学生系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,并在实践应用方面打下一定基础。 二、设计问题 2.1 设计题目和要求 题目:快速排序算法演示 要求完成:
(1) 理解快排算法
(2) 使用界面完成快速排序算法的演示 (3) 使用数组并初始化长度为10的随机数据 (4) 动态跟踪排序 2.2 大概的设计思路
首先通过主函数设置基本操作,即创建窗口,显示标题,设置大小,做事件处理,设置随机数组。使用一个控制颜色的方法,分别设置排序之前、排序中与排序后数组中比较的两个数与其余数的颜色变换。构造排序函数,进行快速排序,在其中调用设置颜色的函数,来显示整个的快速排序算法的演示过程。 三、概要设计
该快速排序演示程序一共包括两大类: 1.演示快速排序过程,其中包括: (1)paint方法:控制颜色与字体
(2)drawBeforeSort函数:在排序前重画当前数组并用颜色标注要比较的数,要知道当前基准数和被比较数在数组中的位置 (3)draw函数:将每次的循环比较过程显示出来
(4)quickSort函数:快速排序过程,针对数组的一段区间 (5)主函数:设置标题与大小、事件处理和随机数组 2.用来显示排序过程:
draw(Graphics g)函数:与第一类的draw函数的参数不同,用于显示排序过程
利用JAVA进行快速排序算法演示
先用paint方法调用drawBeforeSort函数,在排序前重画当前数组并用颜色标注要比较的数,再用quickSort函数针对数组的一段区间进行快速排序,其中调用draw函数,将每次的循环比较过程显示出来,最后调用draw(Graphics g)函数显示排序过程。 四、详细设计
4.1 详细说明
(1) 所用到的类或接口: import java.awt.Color; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.Graphics; import http://bel;
import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.util.ArrayList; import java.util.List;
(2)public void paint(Graphics g){ drawBeforeSort(g); pt.draw(g); }
解释:设置paint方法通过调用函数的方式来控制字体与颜色。(3)public void drawBeforeSort(Graphics g){ Color c = g.getColor(); g.setColor(Color.black);
for(int i = 0; i < s.length; i++){ if(i == this.si){
g.setColor(Color.blue);
g.drawString(Integer.toString(s[i]), 26 * i+150, 50); g.setColor(Color.black);
利用JAVA进行快速排序算法演示
}
else if(i == this.sj){ g.setColor(Color.red);
g.drawString(Integer.toString(s[i]), 26 * i + 150, 50); g.setColor(Color.black); } else{
g.drawString(Integer.toString(s[i]), 26 * i + 150, 50); } }
g.setColor(c); }
解释:设置drawBeforeSort函数,在排序前重画当前数组并用颜色标注要比较的数,要知道当前基准数和被比较数在数组中的位置,其中: if(i == this.si){
g.setColor(Color.blue);
g.drawString(Integer.toString(s[i]), 26 * i+150, 50); g.setColor(Color.black); }
else if(i == this.sj){ g.setColor(Color.red);
g.drawString(Integer.toString(s[i]), 26 * i + 150, 50); g.setColor(Color.black); } else{
g.drawString(Integer.toString(s[i]), 26 * i + 150, 50); }
解释:使用if语句,将基准值设为蓝色字体,与基准值做比较的数设为红色字体,其余用黑色显示,如图1-1
利用JAVA进行快速排序算法演示
图 1-1 设置字体颜色
(4)public void draw(List<Integer> temp, int k, int i, int j, int index,boolean before){
if(temp == null && !before){ pt.j = 0; repaint(); }
pt.list = temp; if(before){ this.si = i; this.sj = index; } else{ pt.i = i; pt.j = j;
pt.index = index; pt.k = k; }
利用JAVA进行快速排序算法演示
repaint(); try {
Thread.sleep(3000); }
catch (InterruptedException e) { e.printStackTrace(); } }
解释:设置draw函数,通过quickSort函数调用该函数,将每次的循环比较过程显示出来,其中: try {
Thread.sleep(3000); }
catch (InterruptedException e) { e.printStackTrace(); }
解释:延时处理
(5)public void quickSort(int i, int j){
int k =s[i] ;
int length = j - i + 1; int start = i++;
ArrayList<Integer> temp = new ArrayList<Integer>(); temp.add(k);
int left = 0; int right = length - 1; while(left < right){ int index = j;
draw(temp, left, start, start + length - 1, index,true); if(k > s[j]){
利用JAVA进行快速排序算法演示
index = left; left++; } else{
temp.add(s[j]); index = temp.size() - 1; right--; index = i; }
draw(temp, left, start, start+ length - 1 , index,false);
index = i;
draw(temp, left, start, start + length - 1, index,true); if(left == right){ break; }
if(k < s[i]){ temp.add(s[i]);
index = temp.size() - 1; right--; } else{
temp.add(left, s[i]); index = left; left++; } i++; j--;
draw(temp, left, start, start + length-1, index,false);
上一篇:优秀学生校长推荐信
下一篇:第三章微机远动系统2