前言
首先感谢婷婷,能够组织起我们几个人一起学习算法。想想之前每次学习都会慢慢的不去用心,现在对于算法的了解还是很有限,这次的学习虽然还是以自己研究为主,但是心态确实有了一个很大的转变,我也相信我可以的很好。
工具
语言:C#为基础、C为对照。
工具:VS 、gitbook。
书籍:《算法大全》、《图解算法》等
过程
窗体设计
最开始我的想法是每一个算法都新建一个项目,不过团队的力量是强大的,受小白的启发,决定将冗余减到最少,将窗体设计成这样:
生成随机数
生成随机数本来以为是很简单的过程,但是实际自己敲的时候发现写不出来,然后就查了很多资料,最后还是有三个问题比较模糊,没有尝试:①生成不重复的随机数。②为什么会出现生成的数全部都一样。③生成随机数的不同方法。
由于时间有限,需要先完成学习任务,就用了以前用的常规的来生成了随机数。
public int Number;
int[] data = { };
int[] dataone = { };
//定义一个产生随机数的数组
public int[] Arr ()
{
int[] arr = new int[Number];
System.Random random = new Random();
for (int i = 0; i < arr.Length ; i++)
{
arr[i] = random.Next(Number);
}
return arr;
}
private void butRandom_Click(object sender, EventArgs e)
{
//清空记录
listBox1.Items.Clear();
//将输入的数值给变量
Number = Convert.ToInt32(txtNumber.Text);
data=Arr();
//显示产生的随机数
for (int i = 0; i < data.Length ; i++)
{
listBox1.Items.Add(data[i]);
}
}
冒泡排序
升序
冒泡排序思路:
比较相邻两个数字,将大的放在第二位。
两两相邻的一直到最后一位,就是最大的,不需要在去交换它。
重复前面的步骤,直到左右的都排好。
冒泡实现
直接上代码吧,这一部分还是最简单呢。
/// <summary>
/// 冒泡排序实现
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
listBox2.Items.Clear();
dataone = Arr();
int temp;
//冒泡的过程
for (int i = 1; i < dataone.Length ; i++)
{
for (int j = 0; j < dataone.Length-i; j++)
{
if (dataone[j] < dataone[j + 1])
{
temp = dataone[j+1];
dataone[j + 1] = dataone[j];
dataone[j] = temp;
}
}
}
//显示排序结果
for (int k = 0; k < dataone.Length ; k++)
{
listBox2.Items.Add(dataone[k]);
}
}
总结
世上无难事只怕有心人,整个过程虽然遇到了很多坎坷,但是却非常的开心,后面还有其他的,继续加油!