技术文摘
C#直接插入排序介绍
2025-01-02 03:43:28 小编
C#直接插入排序介绍
在C#编程中,排序算法是非常重要的一部分。直接插入排序作为一种简单且基础的排序算法,有着广泛的应用和独特的优势。
直接插入排序的基本思想是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。具体来说,它从第二个元素开始,将其与前面已排好序的元素依次比较,如果该元素小于前面的某个元素,则将前面的元素后移,直到找到合适的位置插入该元素。
下面是一个用C#实现直接插入排序的示例代码:
class Program
{
static void InsertionSort(int[] arr)
{
int n = arr.Length;
for (int i = 1; i < n; ++i)
{
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key)
{
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
static void Main()
{
int[] arr = { 12, 11, 13, 5, 6 };
InsertionSort(arr);
foreach (int num in arr)
{
Console.Write(num + " ");
}
}
}
在这段代码中,外层循环遍历数组中的每个元素,内层循环用于将当前元素插入到已排好序的部分。
直接插入排序的时间复杂度在最好情况下为O(n),即数组已经有序时,只需进行n - 1次比较。最坏情况下为O(n²),例如数组是逆序的情况。平均时间复杂度也是O(n²)。空间复杂度为O(1),因为它只需要一个额外的空间来存储临时变量。
直接插入排序适用于数据量较小的情况,它是一种稳定的排序算法,即相等元素的相对顺序在排序前后不会改变。例如,在对学生成绩进行排序时,如果两个学生成绩相同,直接插入排序会保持他们原来的顺序。
直接插入排序虽然在处理大规模数据时效率不高,但对于小规模数据或者基本有序的数据,它是一种简单有效的排序方法,在C#编程中有着一定的实用价值。