没有合适的资源?快使用搜索试试~ 我知道了~
C下多线程实现实例一个图形化的排序算法演示程序.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 82 浏览量
2022-07-13
21:59:01
上传
评论
收藏 212KB PDF 举报
温馨提示
试读
16页
C下多线程实现实例一个图形化的排序算法演示程序.pdf
资源推荐
资源详情
资源评论
C# 下多线程 实现 实例 ---- 一个图形化的排序算法 演示程序
2010-05-04 19:45 1118 人阅读 评论 (3) 收藏 举报
前几天自己编了几个排序的算法:冒泡法,希尔排序法、 快速排序法, 本来是编了一个控制
台程序,比较一下三种排序方法的优劣。后来想起来当年学 Delphi 时,有个例子是图形的
方式, 一个窗口内演示三种排序法, 图形界面把排序的过程实时的表现出来,挺有意思,闲
着没事,我就用 C#也编了一个。今天终于完工了。
这个程序主要是一个 多线程 的实现问题, 有些地方我实际上也偷了些懒, 比如对主窗体的操
作,我没有考虑各个子线程的同步问题。 所以功能是实现了, 程序的代码质量,可能比较毛
草,请大家多包涵。 今天我先贴上排序的演示算法,真正具有实用性的排序代码, 下次我再
贴上。如果哪位想要完整代码,请留下邮箱,咱们可以交流。但我不是天天上网,可能给得
不及时,别着急哟。
1、程序框架说明
建立一 Windows32 程序,项目名称为 AlgorithmSort ,在主窗体内加入 4 个 Panel ,Panel4
对齐方式改为 Top, Panel1 ,Panel2 , Panel3 的对齐方式为 Left, 在 Panel4 上放三个按钮,
分别命名: btnRefresh 、btnStart 、btnQuit 。注意要先把 4 个 Panel 都放到主窗体里,然后
再去改对齐方式,要不没法形成一上三下的窗口模式。主窗体界面如下:
主窗体文件完整代码如下,自己根据代码建立工程时,请注意 Form1_Paint(object sender,
PaintEventArgs e) ,是事件处理函数,通过属性栏选择事件添加上去的。
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespaceAlgorithmSort
{
public partial class Form1 : Form
{
int[] Array1, Array2, Array3;
CSortQuicklySort ;
CSortShellSort;
CSortBubbleSort;
System.Threading.ThreadtheQuicklySortThread;
System.Threading.ThreadtheShellSortThread;
System.Threading.ThreadtheBubbleSortThread;
System.Threading.ThreadtheDeamonThread;
public Form1()
{
InitializeComponent();
Array1 = new int[1000];
Array2 = new int[1000];
Array3 = new int[1000];
InitializeData(ref Array1);
Array.Copy(Array1,Array2,Array2.Length);
Array.Copy(Array1,Array3,Array3.Length);
QuicklySort = new CSort(panel3);
ShellSort = new CSort(panel2);
BubbleSort = new CSort(panel1);
}
/// <summary>
/// 用随机数初始化数组 A 的每一成员
/// </summary>
/// <param name="A"> 通过引用的方式,返回数组 A 中的数据 </param>
private void InitializeData(ref int[] A)
{
System.RandomRandomer = new System.Random();
for (inti = 0; i<A.Length;i++ )
{
A[i] = Randomer.Next() % A.Length;
}
}
/// <summary>
/// 根据指定数组每一组数据的大小,在 Panel 上画红线,数据越大,线越长
/// 注,初始化数组时,使用数组的长度做为数据取值的最大值
/// </summary>
/// <param name="thePanel"> 画线的区域控件 </param>
/// <param name="Array"> 数据数组 </param>
private void ShowData(System.Windows.Forms.PanelthePanel, int[] theArray)
{
System.Drawing.GraphicstheGraph = thePanel.CreateGraphics();
System.Drawing.PenthePen = new
System.Drawing.Pen(System.Drawing.Color.Red);
System.Drawing.PentheEraser = new System.Drawing.Pen(thePanel.BackColor);
for (inti = 0; i<theArray.Length; i++)
{
theGraph.DrawLine(thePen, 0,
i * thePanel.ClientRectangle.Height / theArray.Length,
theArray[i] * thePanel.ClientRectangle.Width / theArray.Length,
i * thePanel.ClientRectangle.Height / theArray.Length
);
theGraph.DrawLine(theEraser,
theArray[i] * thePanel.ClientRectangle.Width / theArray.Length,
i * thePanel.ClientRectangle.Height / theArray.Length,
thePanel.ClientRectangle.Width,
i * thePanel.ClientRectangle.Height / theArray.Length
);
}
}
剩余15页未读,继续阅读
资源评论
yyc13139216118
- 粉丝: 2
- 资源: 6万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功