C# 排序算法 冒泡排序
使用环境 vs2017 .net core 2.1 控制台程序
实现方式:从数组第一位开始,每个元素和它下一位比较,将大的换到后面,即每一轮循环之后可以确定一个位置。
static void Main(string[] args)
{
Console.WriteLine("冒泡排序-示例");
// 记录外部循环次数
int outListInt = 0;
// 记录内部循环次数
int inListInt = 0;
// 记录排序次数
int sortListInt = 0;
// 初始化 list 无序列表
List<int> baseIntList = new List<int>()
{
65, 1, 5, 2, 7, 11, 2, 4, 3
};
// 冒泡排序 外部循环
for (int i = 0; i < baseIntList.Count - 1; i++)
{
outListInt += 1;
// 冒泡排序 内部循环
for (int j = 0; j < baseIntList.Count - i - 1; j++)
{
inListInt += 1;
if (baseIntList[j] > baseIntList[j + 1])
{
// 输出
OutputResult("交换之前", baseIntList);
Console.Write(String.Format(" {0:D}<-交换->{1:D} ", baseIntList[j], baseIntList[j + 1]));//测试使用
int b = baseIntList[j];
baseIntList[j] = baseIntList[j + 1];
baseIntList[j + 1] = b;
// 输出
OutputResult("交换之后", baseIntList);
// 换行
Console.WriteLine();
sortListInt += 1;
}
}
}
Console.WriteLine();
//
Console.WriteLine("外部循环次数:" + outListInt);
Console.WriteLine("内部循环次数:" + inListInt);
Console.WriteLine("排 序 次 数:" + sortListInt);
//
OutputResult("输出结果", baseIntList);
Console.ReadKey();
}
/// <summary>
/// 格式化输出
/// </summary>
/// <param name="outputString">输出标题</param>
/// <param name="baseIntList">输出内容</param>
private static void OutputResult(string outputString, List<int> baseIntList)
{
Console.Write(outputString + ":");
foreach (int itemInt in baseIntList)
{
Console.Write(itemInt + " ");
}
}