技术文摘
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#编程中有着一定的实用价值。
- Highlight.js给HTML代码添加行号的方法
- 如何解决标签中 line-height: 0px 无效问题
- 日历数字显示异常,“num”变量失效原因探究
- 使用 num 变量时日历表无法正常显示日期的原因
- CSS背景色问题:父元素溢出隐藏后子元素背景色缺失该如何解决
- 美观的开源数字大屏驾驶舱框架有哪些
- Span标签换行时怎样自动添加margin-top值
- vertical-align中文字的对齐位置究竟在哪
- 网页缓存优先级:究竟是meta标签还是Response Headers起决定作用
- 预加载登录界面及在网页加载前执行JavaScript方法跳转至登录界面的方法
- 移动端日期选择怎样实现左右滑动切换效果
- JavaScript中在保留六位小数时去除多余0的方法
- 设置 body 元素 flex 布局后子元素为何无法垂直居中
- 后端 GET 请求输入内容处理:兼顾安全性与跨端展示的策略
- React与Vite处理CSS加载的方法