JAVA快速排序算法课设

时间: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);

利用 …… 此处隐藏:5375字,全部文档内容请下载后查看。喜欢就下载吧 ……

JAVA快速排序算法课设.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    Copyright © 2023-2025 学科文库 版权所有
    本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
    客服QQ:370150219 邮箱:370150219@qq.com
    苏ICP备16052595号-5

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

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