数组排序算法实例1
数据结构与算法是我们编程中一门基础而不可缺少的一门课程,其中算法就有很多,熟悉使用算法能使我们的项目运行效果和代码量事半功倍;下面就是就近学习的关于数组的排序算法的介绍
数组排序方法又有很多比如:选择排序法,冒泡排序法,快速排序法,直接排序法,使用希尔排序法等等一系列的排序方法,下面是一个选择排序法的实例;
选择排序法基本实现思路货就是取n个长度的序列的最小的元素作为有序序列的第P个记录,并且命令P为1~1-n;简单来说就是从数组的第一个元素一次跟相邻的后一个元素进行对比,进行完一趟对比后返回最小的一个元素,并把最小的元素放在原数组的首位置,把首位置的元素跟第一趟遍历的最小元素位置调换,流程图如下:
循环第一趟找到最小元素10在数组[4]位置,我们要把他方法首位置就要把数组[0]的元素放到数组[4]
重新排序
这就是选择排序实现流程,下面是窗体样式以及具体代码:
1、 窗体样式
2、 后台处理代码:
private int[] G_int_value;//定义整形数组字段
private Random G_Random = new Random();//创建随机数对象
//生成随机数组
private void btn_Generate_Click(object sender, EventArgs e)
{
G_int_value = new int[G_Random.Next(10, 20)];//生成随机长度数组
for (int i = 0; i < G_int_value.Length; i++)//遍历数组
{
G_int_value[i] = G_Random.Next(0, 100);//为数组赋随机数值
}
txt_str.Clear();//清空控件内字符串
foreach (int i in G_int_value)//遍历字符串集合
{
txt_str.Text +=i.ToString() + ", ";//向控件内添加字符串
}
}
private void btn_sort_Click(object sender, EventArgs e)
{
if (G_int_value != null)
{
int min;//定义一个int变量,用来存储数组下标
for (int i = 0; i < G_int_value.Length - 1; i++)//循环访问数组中的元素值(除最后一个)
{
min = i;//为定义的数组下标赋值
for (int j = i + 1; j < G_int_value.Length; j++)//循环访问数组中的元素值(除第一个)
{
if (G_int_value[j] < G_int_value[min])//判断相邻两个元素值的大小
min = j;
}
int t = G_int_value[min];//定义一个int变量,用来存储比较大的数组元素值
G_int_value[min] = G_int_value[i];//将小的数组元素值移动到前一位
G_int_value[i] = t;//将int变量中存储的较大的数组元素值向后移(排序重新给数组赋值)
}
txt_str2.Clear();//清空控件内字符串
foreach (int i in G_int_value)//遍历字符串集合
{
txt_str2.Text += i.ToString() + ", ";//向控件内添加字符串
}
}
else
{
MessageBox.Show("首先应当生成数组,然后再进行排序。", "提示!");
}
}