c# 动态可视排序算法

之所谓高级语言人们好像没有用它做一些低级算法考量,经典的排序算法都在c语言当中,下面我对

双向冒泡排序

桶排序

梳排序

循环排序

侏儒排序

堆排序

插入排序

合并排序

奇偶排序

亭子间排序

快速排序

兼有快速排序和冒泡排序

选择排序

shell 排序

一一进行讲解

首先我们要写一个可视化动画组件来显示排序的过程

每个算法都有自己的方法命名的排序算法的名称和接受IList的参数,返回IList的对象。

方法DrawSamples是通过变量随机数来显示所有算法

private void DrawSamples() { g.Clear(Color.White); for (int i = 0; i < array.Count; i++) { int x = (int)(((double)pnlSamples.Width / array.Count) * i); Pen pen = new Pen(Color.Black); g.DrawLine(pen, new Point(x, pnlSamples.Height), new Point(x, (int)(pnlSamples.Height - (int)array[i]))); } }

方法Randomize负责所有数据随机样本

public void Randomize(IList list) { for (int i = list.Count - 1; i > 0; i--) { int swapIndex = rng.Next(i + 1); if (swapIndex != i) { object tmp = list[swapIndex]; list[swapIndex] = list[i]; list[i] = tmp; } } }排序创建动画复选框被选中后,图像每两个示例数组交换产生。这个图像是索引从0到n,其中n代表swappings当前数目。

private void SavePicture() { ImageCodecInfo myImageCodecInfo = this.getEncoderInfo("image/gif"); EncoderParameter myEncoderParameter = new EncoderParameter(System.Drawing.Imaging.Encoder.Compression, (long)EncoderValue.CompressionLZW); EncoderParameter qualityParam = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 0L); EncoderParameters myEncoderParameters = new EncoderParameters(1); EncoderParameters encoderParams = new EncoderParameters(2); encoderParams.Param[0] = qualityParam; encoderParams.Param[1] = myEncoderParameter; string destPath = System.IO.Path.Combine(txtOutputFolder.Text, imgCount + ".gif"); bmpsave.Save(destPath, myImageCodecInfo, encoderParams); imgCount++; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值