选择排序与冒泡排序
/// <summary>
/// 选择排序
/// </summary>
/// <param name="arr"></param>
static void Sort1(int[] arr)
{
int len = arr.Length;
for (var i = 0; i < arr.Length; i++)
{
int min = i;
for (var n = i + 1; n < arr.Length; n++)
{
if (arr[n] < arr[min])
{
min = n;
}
}
var temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
/// <summary>
/// 冒泡排序
/// </summary>
/// <param name="arr"></param>
static void Sort2(int[] arr)
{
int len = arr.Length;
for (var i = 0; i < arr.Length; i++)
{
for (var n = i + 1; n < arr.Length; n++)
{
if (arr[n] < arr[i])
{
var temp = arr[i];
arr[i] = arr[n];
arr[i] = temp;
}
}
}
}
static void Main(string[] args)
{
var arr = new int[]{1,2,5,6,7,3,4,56,7,7};
Sort1(arr);
foreach (var i in arr)
{
Console.WriteLine(i);
}
var arr2 = new int[] { 1, 2, 5, 6, 7, 3, 4, 56, 7, 7 };
Sort1(arr2);
foreach (var i in arr2)
{
Console.WriteLine(i);
}
Console.ReadKey();
}
以下为这两种排序算法的对比:
选择排序与冒泡排序比较的次数是一样的
选择排序的交换次数要比冒泡排序的交换次数少
以下为这两种算法的关键点:
为了找出最小的元素而扫描一遍数组,并不能为下一遍扫描提供任何信息,
这样就造成这种现象:一个有序的数组和一个无需的数组排序时间是一样的
交换次数和数组的大小是线性的
数组越大,以为着交换次数也越大
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。