Unity学习之C#___排序算法
上一篇排序算法中我们分享了四种排序算法:简单选择排序、插入排序、冒泡排序和快速排序,这次分享希尔排序、归并排序和另一种写法的插入排序
一、插入排序
上一篇文章中我在写插入排序的时候,将大于当前元素的索引向后移动一位,但是我发现了一种更简单的写法(其实上看维基百科学的。。)这里直接交换值的位置,因为temp的值是在循环外拿到的,所以可以一直持有比较,直到赋值到正确的位置。
维基百科上演示的图:这张图演示的是我之前写的那个算法,这次算法不同的是,注意:以2举例,在2往前比较时,其实每比较一次不仅是把大于2的数向后移动一位,同时还把2往前挪了一位并赋值(代码17行)

代码
/// <summary>
/// 插入排序
/// </summary>
/// <param name="array"></param>
static void InsetSortPlus(int[] array)
{
for (int i = 1; i < array.Length; i++)
{
int temp = array[i];
//拿i 前面所有的值依次和 i 比较,如果比 i 大往后赋值,在把temp赋值过去,
//如果有一个比 i 小 那就推出循环,i 位置不动,因为 i 的前面已经是有序数列了。
for (int j = i-1; j>=0 ; j--)
{
if(array[j]>temp)
{
array[j + 1] = array[j];
array[j] = temp;
}
else
{
break;
}
}
}
}

本文详细介绍了C#中的三种排序算法:插入排序、希尔排序和归并排序。通过代码实现和测试,解释了每种算法的工作原理和效率提升。希尔排序是对插入排序的优化,归并排序则采用分治策略。测试结果显示,这些排序算法在不同场景下表现各异。
最低0.47元/天 解锁文章
1077

被折叠的 条评论
为什么被折叠?



