前言
最近想学习一下算法的处理,从网上搜索了一下例子进行了总结说明
初学 开始不会接触太难的算法 先从最简单的算法开始学起
这次主要讲的就是 冒泡算法 ,和选择算法。 直接贴代码
代码示例
/// <summary>
/// 冒泡排序 算法处理
/// 思想:从数组第一位开始,每个元素和它下一位比较,将大的换到后面,即每一轮循环之后可以确定一个位置
/// </summary>
/// <param name="array">针对需要处理的数据信息进行处理</param>
/// <returns>返回数组集合信息</returns>
public static int[] Bubbling(int[] array)
{
#region 冒泡排序
ArrayList mewArray = new ArrayList();
//定义一个状态信息进行 区分 判断这个数组的排序是否完成
bool isKeep = false;
//遍历数组中的所有元素信息
for (int i = 0; i < array.Length; i++)
{
//这一层循环是 从数组的第一个元素开始进行循环处理 但是总长度是比原数组长度少一个 好进行比较
for (int j = 0; j < array.Length - i - 1; j++)
{
#region 这一层开始做逻辑判断信息进行处理
//如果第一个数 大于第二个数 进行替换处理 大数往后移
if (array[j] > array[j + 1])
{
int b = array[j];
array[j] = array[j + 1];
array[j + 1] = b;
//状态进行了替换
isKeep = true;
}
#endregion
}
if (!isKeep) break;
}
return array;
#endregion
}
/// <summary>
/// 选择排序
/// </summary>
/// <param name="array">针对需要处理的数据信息进行处理</param>
/// <returns>返回处理好的数组集合信息</returns>
public static int[] XuanZe(int[] array)
{
#region 选择排序
//遍历数组中的所有元素信息
for (int i = 0; i < array.Length; i++)
{
//初始化 默认第一个是最小的
int min = i;
//判断获取最小值的下标信息 从第二个开始进行比较
for (int j = i + 1; j < array.Length; j++)
{
if (array[min] > array[j])
{
min = j;
}
}
//判断表示当前值不是最小值信息
if (min != i)
{
//进行操作替换 保证每次循环的这个信息是最小值 达到效果 多少个元素 循环多少次进行处理
int b = array[i];
array[i] = array[min];
array[min] = b;
}
}
return array;
#endregion
}
说明
我这边是那数字数组做比较处理的 这样做的原因是方便理解,以及掌握
示例{6,5,4,3,2,1}
经过排序后的结果都是{1,2,3,4,5,6}
经过测试 代码是没有问题的 算法还OK
继续努力学习中
从网上找到一个图片 可以形象的说明冒泡排序
图片来源:https://blog.csdn.net/ChinarCSDN/article/details/101800516