一、插入排序
1.原理与分析
先看图:

插入排序是将序列分为排序区和未排序区,将未排序区的数值依次从后往前与排序区数值进行比较,选择到合适的位置插入。
2.代码实现(C#)
public static void InsertSort(int[] array)
{
//未排序区索引
int index;
//记录待插入的值
int temp;
for(index = 1; index < array.Length; index++)
{
int insertPos = index - 1;
temp = array[index];
while(insertPos >= 0 && array[insertPos] > temp)
{
array[insertPos + 1] = array[insertPos];
insertPos--;
}
array[insertPos + 1] = temp;
}
}
二、希尔排序
1.原理与分析
先看图:

希尔排序是对插入排序的一种优化,在插入排序的基础上加了步长的概念,在面对较大数据量时,能有效提高插入排序的效率。
2.代码实现(C#)
public static void ShellSort(int[] array)
{
int step = array.Length / 2;
int index;
int temp;
while (step >= 1)
{
for (index = step; index < array.Length; index++)
{
temp = array[index];
int insertPos = index - step;
while (insertPos >= 0 && array[insertPos] > temp)
{
array[insertPos + step] = array[insertPos];
insertPos -= step;
}
array[insertPos + step] = temp;
}
step /= 2;
}
}
本文详细介绍了两种常见的排序算法——插入排序和希尔排序。对于插入排序,文章通过代码解释了其工作原理,即通过比较将未排序元素插入到已排序区的正确位置。希尔排序则在插入排序基础上引入步长概念,提高了大规模数据的排序效率。提供了完整的C#代码实现,便于理解和应用。
69万+

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



