C#数据结构与算法系列(十八):冒泡排序算法(BubbleSort)
标签:冒泡 line 二次排序 void 第四次 实现 思想 ++ info
1.介绍
冒泡排序的基本思想就是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底的气泡一样逐渐向上冒泡。
因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下
来没有进行过交换,就说明序列有序,因此要在排序过程中设置
一个标志flag判断元素是否进行过交换。从而减少不必要的比较。(这里说的优化,可以在冒泡排序写好后,在进行)
时间复杂度:O(n^2)
2.图解
3.代码实现
using System;
namespace DataStructure
{
public class BubbleSort
{
///
/// 测试
///
public static void Test()
{
int[] arr = { 3, 9, -1, 10, 20 };
Console.WriteLine("排序的数组:" + ArrayToString(arr));
Console.WriteLine("\n优化后的数组排序");
Sort(arr);
Console.WriteLine("\n优化前的数组排序");
arr = new int[] { 3, 9, -1, 10, 20 };
for (int i = 0; i 1 - 0; i++)
{
int temp = 0;
if (arr[i] > arr[i + 1])
{
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
System.Console.WriteLine("\n第一次排序的结果:" + ArrayToString(arr));
for (int i = 0; i 1 - 1; i++)
{
int temp = 0;
if (arr[i] > arr[i + 1])
{
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
System.Console.WriteLine("\n第二次排序的结果:" + ArrayToString(arr));
for (int i = 0; i 1 - 2; i++)
{
int temp = 0;
if (arr[i] > arr[i + 1])
{
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
System.Console.WriteLine("\n第三次排序的结果:" + ArrayToString(arr));
for (int i = 0; i 1 - 3; i++)
{
int temp = 0;
if (arr[i] > arr[i + 1])
{
temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
System.Console.WriteLine("\n第四次排序的结果:" + ArrayToString(arr));
}
///
/// 将数组转换成String
///
///
///
public static string ArrayToString(int[] arr)
{
string result = "";
for (int i = 0; i )
{
result += arr[i] + ",";
}
return result;
}
///
/// 排序算法优化并封装
///
///
public static void Sort(int[] arr)
{
//标识标量,表示是否被交换过
bool flag = false;
//临时变量
int temp = 0;
//要排序的次数,arr.Length-1
for (int i = 1; i )
{
//第几次排序
for (int j = 0; j )
{
//如果前面的数大于后面的数,则交换
if (arr[j] > arr[j + 1])
{
flag = true;
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
//每次排序的结果
System.Console.WriteLine("\n第" + i + "次排序的结果:" + ArrayToString(arr));
if (!flag) break; //在一趟排序中,一次交换都没有发生过
else flag = false; //重置flag进行下次判断
}
}
}
}
4.结果图
C#数据结构与算法系列(十八):冒泡排序算法(BubbleSort)
标签:冒泡 line 二次排序 void 第四次 实现 思想 ++ info
原文地址:https://www.cnblogs.com/vic-tory/p/13194868.html
评论